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 }