dev@woodstock.java.net

Re: autoValidate problem.

From: Bob Yennaco <Bob.Yennaco_at_Sun.COM>
Date: Wed, 17 Oct 2007 17:27:01 -0400

Bob Yennaco wrote:
> Does init() delayed in the onLoad: onLoad="setTimeout('init();', 0);"
> Not sure if this will make a difference but it's simple enough to try.
>
> Otherwise I can tell from the jsp code snippets.
Correction: I *can't* tell

> Is there a DOM node with id="components"? Does
> G.getElementsByTagName("components") return an array of elements? If
> not, then that'd explain why I is null.
>
> Steven Bell wrote:
>> Hello,
>>
>> I'm trying to get autoValidate to work on a textField, modeled after
>> the payment page in the example app, and I keep running into a
>> javascript error.
>>
>> The error is coming out of the com_sun_faces_ajax.js file in the
>> jsf-extensions-dynamic-faces-0.1.jar. It is "I has no properties".
>> The javascript that throws the error is:
>>
>> ...
>> var I = G.getElementsByTagName("components")[0];
>> var C = I.getElementsByTagName("render"); <---- I appears to be
>> null here.
>> for(var F = 0; F < C.length; F++) {
>> ...
>>
>> Here is the textField code:
>>
>> <w:form id="PayableForm">
>> <w:textField style="display:none;" />
>> <w:message for="vendorGci" />
>> <w:label id="vendorGciLabel" for="vendorGci"
>> text="Vendor: " />
>> <w:textField id="vendorGci" autoValidate="true"
>> text="${vendorBean.searchGci}" maxlength="8"
>> required="true"
>> validatorExpression="#{ vendorBean.validateVendor}" />
>>
>>
>> Here is the javascript in the page (the init function is called from
>> the onLoad of the body, this does happen):
>>
>> <w:script type="text/javascript">
>> function VendorListener(){
>> }
>> function VendorNotify(props){
>> alert("VendorNotify called!"); <--------------- I never
>> see this alert message
>> if ( props.id <http://props.id> != "PayableForm:vendorGci") {
>> return; }
>> var field =
>> document.getElementById("PayableForm:vendorGciLabel");
>> field.setProps({
>> valid: props.valid
>> });
>> }
>> VendorListener.prototype.notify = VendorNotify;
>> function initAccountRows(){
>> var table =
>> document.getElementById("PayableForm:vendorAccountTable");
>> table.initAllRows();
>> }
>>
>> function init(){
>> initAccountRows();
>> var listener = new VendorListener();
>> dojo.subscribe(
>> webui.suntheme.widget.textField.event.validation.endTopic ,
>> listener, listener.notify);
>> }
>>
>> Here is the validator method. It currently doesn't do anything, just
>> trying to get something to work. I never see the output, and I never
>> hit the breakpoint in the method.
>>
>> public void validateVendor(FacesContext context, UIComponent
>> comp, Object value){
>> System.out.println("**********************************");
>> System.out.println("validateVendor called");
>> System.out.println(value);
>> System.out.println("**********************************");
>> }
>>
>>
>> I attached a screenshot of firebug running and catching the error.
>> The line number listed is because I used the javascript formatter
>> from here:
>>
>> http://javascript.about.com/b/a/176259.htm
>>
>> To reformat the com_sun_faces_ajax.js so I could get some idea of
>> where it was failing.
>>
>> Any help or ideas would be greatly appreciated.
>>
>> --
>> Thanks,
>>
>> Steven Bell
>> ------------------------------------------------------------------------
>>
>> ------------------------------------------------------------------------
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe_at_woodstock.dev.java.net
>> For additional commands, e-mail: dev-help_at_woodstock.dev.java.net
>>
>