当前位置: 代码迷 >> JavaScript >> JSF杜撰表单
  详细解决方案

JSF杜撰表单

热度:165   发布时间:2012-06-26 10:04:13.0
JSF虚拟表单

JSF虚拟表单,对应熟练使用JSF的人来说,可能也是很陌生的(如果之前未接触过Netbeans IDE里面的可视化JSF),我之前用过可视化JSF,觉得虚拟表单很不错,于是想迁移到JSF,Richfaces里面来,查看了很多源码和机制,终于写出来了,并且得到了大量的使用,解决了一些复杂页面的需求。

?

大家都知道在JSF的form里面的文本域,若验证不通过,即使是不需要提交的域,则也提交不了表单。

?

我这里简单的写了个文档,可能描述不是太清楚,不知道人家看到了能不能明白我的意思:

?

虚拟表单简述

?

(1)???? 说明

JSF有一个真实表单,另外可以定义多个虚拟表单。

虚拟表单由参与者和提交者组成。

虚拟表单可以有多个参与者,也可以没有参与者。

注:我们这是设置不参与提交的域

(2)???? 使用

我们扩展了原有的<h:form>组件,增加了submitConfig属性,用来配置虚拟表单,多个虚拟表单用“,”逗号隔开,虚拟表单名称和域名ID列表用“:”隔开,多个域则用“|”隔开,我们这里的虚拟表单名称就是要提交按钮的ID,如下:

submitConfig="button1:input_aa|input_aa1|aaa|ccc, button2:input_bb|input_bb1|bbb"

这里配置了2个虚拟表单,分别是button1button2

button1不参与提交的域IDinput_aainput_aa1aaa

button2不参与提交的域IDinput_bbinput_bb1bbb

button1提交时,则会忽略域IDinput_aainput_aa1aaa的验证以及解码

button2提交时,则会忽略域IDinput_bbinput_bb1bbb的验证以及解码

当域ID被忽略时,则它里面的所有子域(子组件)也会被忽略

?

(3)???? 例子

<h:form submitConfig="button1:input_aa|input_aa1|aaa,button2:input_bb|input_bb1|bbb">

 

<s:div id="aaa">

           <h:inputText required="true" />

           <h:inputText required="true" />

       </s:div>

 

       <s:div id="bbb">

           <h:inputText required="true" />

           <h:inputText required="true" />

       </s:div>

 

       <h:inputText id="input_aa"  required="true" />

       <h:inputText id="input_aa1" required="true" />

 

       <h:inputText id="input_bb" required="true" />

       <h:inputText id="input_bb1" required="true" />

 

       <h:commandButton id="button1" value="submit1" />

       <h:commandButton id="button2" value="submit2" />

    </h:form>

?

?

大致是这样配置后即可,对form组件标签的扩展程序暂时不提供出来。

  相关解决方案