Javascript/Seam and Facelets has me baffled!
tony.herstell1 Apr 14, 2007 4:27 AMA couple of questions on the code below:
1. Why are my varibales being renamed _id9:? can I guarentee that they will always be prefixied by this and if not how do I reference them?
2. How on earth do I reference the advertType; as document.getElementById("_id9:advertType"); brigs back something strange... that I cannot pass into the javascript function.
On page load I want to fire the script to disable the relevant section.
I think I have to disable it as "display=none" seems to not stop it being validated!
I must be misunderstanding something fundemental about seam, facelets and javascript as they seem at odds... this is weired!
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html" xmlns:ui="http://java.sun.com/jsf/facelets" xmlns:f="http://java.sun.com/jsf/core" xmlns:c="http://java.sun.com/jstl/core" xmlns:s="http://jboss.com/products/seam/taglib"> <script language="JavaScript" src="../../javascript/setstyle/setstyle.js"/> <script language="JavaScript"> function checkAdvertType(radioButtons) { var buttonClicked = radioButtons.value; if (buttonClicked.toString() == "Lineage") { document.getElementById("_id9:goToUpload").disabled = true; document.getElementById("_id9:textArea").disabled = false; } else if (buttonClicked.toString() == "BannerAd") { document.getElementById("_id9:goToUpload").disabled = false; document.getElementById("_id9:textArea").disabled = true; } else { alert("Internal Error - Unsupported Ad Type"); } } </script> <table> <!-- Advert Type --> <tr> <td align="right"> <h:outputLabel for="advertType" value="#{messages.label_ad_type}" /> <h:outputText value="#{messages.label_field_marker}" /> </td> <td align="left"> <table> <tr> <td> <s:decorate> <h:selectOneRadio id="advertType" required="true" value="#{advertisingCampaignController.campaign.advert.type}" onclick="checkAdvertType(this)"> <s:selectItems id="choices" value="#{advertisingCampaignController.campaign.advert.advertTypes}" var="advertType" label="#{messages[advertType.label]}"/> <s:convertEnum /> </h:selectOneRadio> </s:decorate> </td> </tr> </table> </td> </tr> <!-- Text Lines --> <tr id="textLines"> <td align="right"> <h:outputLabel for="advertType" value="#{messages.label_text_lines}" /> <h:outputText value="#{messages.label_field_marker}" /> </td> <td align="left"> <table> <tr> <td> <s:decorate> <h:inputTextarea id="textArea" required="true" rows="4" cols="20" value="#{advertisingCampaignController.campaign.advert.textLines}"> <s:validate/> </h:inputTextarea> </s:decorate> </td> </tr> </table> </td> <td> <h:outputText value="#{messages.tag_mandatory}" styleClass="mandatory" /> </td> </tr> <tr> <td> <h:outputText value="" /> </td> <td> <h:message styleClass="error" for="textArea" /> </td> <td> <h:outputText value="" /> </td> </tr> <!-- Upload Image Component --> <tr id="upload"> <td align="right"> <h:outputLabel for="goToUpload" value="#{messages.label_upload}" /> <h:outputText value="#{messages.label_field_marker}" /> </td> <td align="left"> <h:commandButton id="goToUpload" action="#{advertisingCampaignController.goToUploadBanner}" value="#{messages.button_add_banner}"/> </td> <td> <h:outputText value="#{messages.tag_mandatory}" styleClass="mandatory" /> </td> </tr> <tr> <td> <h:outputText value="" /> </td> <td> <h:message styleClass="error" for="goToUpload" /> </td> <td> <h:outputText value="" /> </td> </tr> <tr> <td colspan="3" align="center"> <s:graphicImage value="#{advertisingCampaignController.campaign.advert.image.imageBytes}" rendered="#{(advertisingCampaignController.campaign.advert.image.name != null) and (advertisingCampaignController.campaign.advert.image.name != '')}"/> </td> </tr> <tr> <td colspan="3" align="center"> <h:outputText value="#{advertisingCampaignController.campaign.advert.image.name}" rendered="#{(advertisingCampaignController.campaign.advert.image.name != null) and (advertisingCampaignController.campaign.advert.image.name != '')}"/> </td> </tr> </table> </html> <script language="JavaScript"> var radioButtons = document.getElementById("_id9:advertType"); checkAdvertType(radioButtons); </script>