dev@woodstock.java.net

Re: autoValidate problem.

From: Dan Labrecque <Dan.Labrecque_at_Sun.COM>
Date: Fri, 26 Oct 2007 13:32:06 -0400

FYI... Although you seem to have found a workaround, I filed an issue
with JSF Extensions.

https://jsf-extensions.dev.java.net/issues/show_bug.cgi?id=83

Dan


AntonioV wrote:
> Hi Bill,
>
> Thanks for your reply.
>
> Yes, it seems that may be one of the root causes of the problem:
>
> I've substituted the "validatorExpression" with a <f:validator> nested in
> the <webuijsf:textField>, and now the validator is being invoked correctly.
>
> But the validation event is not being published through the dojo bus, my
> "alert" below is never invoked:
>
> // --- Subscribe to validation event. ---
>
> dojo.event.topic.subscribe(webui.suntheme.widget.textField.validation.event.endTopic,
> processEvents, "update");
>
> // --- this closure is used for validation callback ---
> var processEvents = {
> update: function(props) {
> alert("Alerta");
> var domNode = document.getElementById("plantillas:clientelabel");
> domNode.refresh();
> }
> }
>
> Any ideas on what the problem may be are indeed welcome.
>
> Thanks again,
> Antonio
>
>
>
> Bill Edwards - Sun BOS Software wrote:
>
>> Not sure this helps... In my early stumbling around
>> Facelets/Woodstock, I discovered
>> Facelets did not like MethodExpressions very much (still expected string
>> actions).
>> This is basically why Actions still work. When we investigated this a
>> bit, it turned
>> out that JSP was providing a conversion method to wrap the
>> ActionExpression return,
>> but Facelets was not. Not sure where the fault lies, or rather
>> anything further has
>> happened to address this, but two cents worth....
>>
>> Steven Bell wrote:
>>
>>> I've been doing quite a bit of digging on this, and here's what I've
>>> come up with so far. It may not be all right, but it's what I'm going
>>> with for now
>>>
>>> First, the "I has no properties" is irrelevant. It doesn't seem to
>>> actually indicate a problem. I still get it on pages where the
>>> autovalidation is working just fine.
>>>
>>> Basically there seems to be a real problem with facelets and the way
>>> woodstock performs actions.
>>>
>>> I'll bet that in your pages for buttons you are using action instead
>>> of actionExpression because actionExpression doesn't seem to work, but
>>> action does. That's what I was doing, and I didn't really think twice
>>> about it. It seems that facelets in some way is preventing the
>>> woodstocks normal communications.
>>>
>>> At this point in my (rather large mission critical) project I'm in the
>>> process of dumping facelets and going with straight jsp pages. If you
>>> do this you'll probably also notice that the jsp validation is much
>>> more strict and holds you to the taglib definitions. I had to do a
>>> fair amount of work to get my pages to render again, not hard, just
>>> time consuming.
>>>
>>> On 10/24/07, *AntonioV* <antonio_at_antonioshome.net
>>> <mailto:antonio_at_antonioshome.net>> wrote:
>>>
>>>
>>> Hi,
>>>
>>> I'm also experimenting this problem (Woodstock build #14, facelets
>>> 1.1.13).
>>>
>>> Mozilla error console reports:
>>>
>>> Error: no element found
>>> Source File:
>>> http://localhost:8080/gesif/clientes/entrada/plantillas/alta.jsf
>>> Line: 1, Column: 158
>>> Source Code:
>>> <partial-response><components><render
>>>
>>> id="plantillas:clienteid"><markup><![CDATA[{"id":"plantillas:clienteid","valid":true}]]></markup></render></components>-------------------------------------------------------------------------------------------------------------------------------------------------------------^
>>>
>>>
>>> (There *is* a component named 'plantillas:clienteid' )
>>>
>>> And
>>>
>>> Error: I has no properties
>>> Source File:
>>> http://localhost:8080/gesif/theme/META-INF/com_sun_faces_ajax.js
>>> <http://localhost:8080/gesif/theme/META-INF/com_sun_faces_ajax.js>
>>> Line: 1
>>>
>>>
>>> The delayed init does *not* help, either.
>>>
>>>
>>>
>>>
>>> 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. 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> <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
>>> <mailto:dev-unsubscribe_at_woodstock.dev.java.net>
>>> >> For additional commands, e-mail:
>>> dev-help_at_woodstock.dev.java.net
>>> <mailto:dev-help_at_woodstock.dev.java.net>
>>> >>
>>> >
>>> >
>>> ---------------------------------------------------------------------
>>> > To unsubscribe, e-mail: dev-unsubscribe_at_woodstock.dev.java.net
>>> <mailto:dev-unsubscribe_at_woodstock.dev.java.net>
>>> > For additional commands, e-mail: dev-help_at_woodstock.dev.java.net
>>> <mailto:dev-help_at_woodstock.dev.java.net>
>>> >
>>> >
>>> >
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/autoValidate-problem.-tf4642564.html#a13395605
>>>
>>> <http://www.nabble.com/autoValidate-problem.-tf4642564.html#a13395605>
>>> Sent from the Project Woodstock - Dev mailing list archive at
>>> Nabble.com <http://Nabble.com>.
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscribe_at_woodstock.dev.java.net
>>> <mailto:dev-unsubscribe_at_woodstock.dev.java.net>
>>> For additional commands, e-mail: dev-help_at_woodstock.dev.java.net
>>> <mailto:dev-help_at_woodstock.dev.java.net>
>>>
>>>
>>>
>>>
>>> --
>>> Regards,
>>>
>>> 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
>>
>>
>>
>>
>
>