roy huang wrote:

>Hi,all:
>    in 2.1.6,Forms add widget state.I have test it yesterday and found some 
> problems and questions.
>    Questions:
>    In V2 flowscript,I can set widget state:
>        var name=form.lookupWidget("name");
>        name.state="disabled";
>    but in V1,I can get but set will produce an error:
>        var name=form.lookupWidget("name");
>        print(name.state);    //works here
>        name.state="disabled";    //error here.
>    The error is like can't convert disabled to Widgetstate ....
>    How can I change a widget's state in V1?
>  
>

Use name.setWidgetState(WidgetState.DISABLED)

>    Suggestions:
>    I use forms block to develop a real application,some application's 
> requirements here:
>    i)  Widgets can't be displayed under some conditions
>    ii) Widgets should be read-only under some conditions
>    In 2.1.5.1,My solutions are:
>    To i),Use jxtemplates with <jx:if> to control display the widget or not
>    To ii),a)Use jxtemplates with <jx:if> to add <fi:styling> disabled to the 
> widget
>          b)Use two widget,one is <fd:field> another is <fd:output>,using 
> <jx:if> to control display one of them.If need to edit ,display the field 
> widget,if need to display only ,make the field widget hidden and display the 
> output widget(set its value using flowscript).I can't using <fi:styling 
> type="output"/> because this will make the field widget's value empty after 
> save.
>    I don't like these solutions because they all need coding in 
> jxtemplate,mix UI and logic.
>    
>    2.1.6 add widget state,now has 3 state:active,disabled,invisible.It seems 
> disabled and invisible state can help me to make a better solutions,but 
> here's the problem:
>    1.State disabled render a widget with disabled attribute,just like my 
> solution ii) a),but can't do the same effaces like ii).b).I try to modify 
> forms-field-styling.xsl,found if only display value,the field widget's value 
> will be empty after save.
>    2.State invisible just make a widget can't be used,and I can't use it for 
> i) because if my style page using the invisible widget will produce exception 
> like don't have this element ...
>    
>    My suggestions are:
>    A)If a widget's state is invisible,let render knows it is invisible,don't 
> delete the widget.We can make the widget invisible by modify 
> forms-field-styling.xsl.
>  
>

No, invisible is, as its name implies, is really *not visible*.

What you describe here comes again to an additional "output" state that
I think we should add, considering the vast number of use cases where it
could be used.

>    B)To state disabled,we can keep current display method using input 
> disabled attributed,but the widget's value shouldn't get from the 
> request.This allow user adjust forms-field-styling.xsl to just display text 
> in final page.
>    C)If B) is not a good suggestion,then make <fi:styling="output"/> just 
> like <fd:output> to keep it's original value or make it possible to change 
> one widget's type form field to output.
>  
>

That's what an "output" state would allow.

How does that sound?

Sylvain

-- 
Sylvain Wallez                                  Anyware Technologies
http://www.apache.org/~sylvain           http://www.anyware-tech.com
{ XML, Java, Cocoon, OpenSource }*{ Training, Consulting, Projects }

Reply via email to