我在论坛中曾讨论过一个组件,就是可以实现省市联动二级下拉列表。它的原理就是该组件通过Ajax方式向绑定的二级列表组件输入相应的城市数据。
1.lib配置:
把lintw_jwc.jar(附件)导入项目的lib下。
在application文件中添加组件库声明
<library id="extlib"
specification path="classpath:/com/lintw/jwc/lin.library"/> 。
2.BaseAjax组件:
我给凡使用Ajax功能的组件另配置了一个组件BaseAjax,该组件必需先被引用。
[html]:<span jwcid="baseAjax"/>(一般放在<body>后面)
[page]:<property name="functionName"/>
<component id="baseAjax" type="extlib:BaseAjax">
<binding name="functionName" value="functionName"/>
</component>
functionName是一个由BaseAjax输出的javascript方法名,供其它组件调用。
3.联动列表组件例子:
[html]:
<p><form action="" method="post" name="selectForm" jwcid="selectForm">
<p><select name="cityPropertySelect" jwcid="cityPropertySelect">
<option value="fj">福建</option>
</select>
</p><p><select name="citySelect" jwcid="citySelect">
<option value="xm">厦门</option>
<option value="fz" selected>福州</option>
</select>
</p><P><input type="submit" name="Submit" value="提交"/></P>
</form>
[page]:
<component id="selectForm" type="Form">
<binding name="listener" value="listener:selectSubmit"/>
</component>
<property name="pvalue"/>
<asset name="citySelect" path="context:/menuxml/citySelectItem.xml"/>
<component id="cityPropertySelect" type="linlib:CityPropertySelection">
<binding name="functionName" value="functionName"/>
<binding name="value" value="pvalue"/>
<binding name="xmlModel" value="asset:citySelect"/>
<binding name="nextSelectionName" value="literal:citySelect"/>
</component>
<property name="value"/>
<asset name="defaultSelect" path="context:/menuxml/defaultSelectItem.xml"/>
<component id="citySelect" type="linlib:XMLSelect">
<binding name="value" value="value"/>
<binding name="xmlModel" value="asset:defaultSelect"/>
</component>
地址数据就放在context:/menuxml/citySelectItem.xml中(数据很少
)。
cityPropertySelect就是联动组件,nextSelectionName属性(String)为要绑定的二级列表组件的id。
citySelect可以是普通的select组件(这里我用自己写的XMLSelect组件)。
pvalue及value为各自的输出值。
4.结束语:
在附件里有源码及xml,有不足之处望各位大虾批评指正。