Javascript JSF复杂级联单选按钮
我需要将一个应用程序从PHP移植到JSF2。除了一个相当复杂的单选按钮组外,一切正常: 选择“处理应用程序:”时,将启用子单选按钮组。其中,当选择“其他”时,相应的文本框被启用。选择“品牌”后,将启用这两个文本框。当然,取消选择其中任何一个都会再次禁用相应的标记 除了3个独立的Javascript JSF复杂级联单选按钮,javascript,html,jsf,radio-button,jsf-2,Javascript,Html,Jsf,Radio Button,Jsf 2,我需要将一个应用程序从PHP移植到JSF2。除了一个相当复杂的单选按钮组外,一切正常: 选择“处理应用程序:”时,将启用子单选按钮组。其中,当选择“其他”时,相应的文本框被启用。选择“品牌”后,将启用这两个文本框。当然,取消选择其中任何一个都会再次禁用相应的标记 除了3个独立的标记,大量javascript处理禁用/启用标记,以及更多javascript处理跨不同单选按钮选择/取消选择,使它们看起来像一组单选按钮之外,我想不出任何方法来实现这一点。有人能想出比这更好的解决办法吗?类似于自定义的
标记,大量javascript处理禁用/启用标记,以及更多javascript处理跨不同单选按钮选择/取消选择,使它们看起来像一组单选按钮之外,我想不出任何方法来实现这一点。有人能想出比这更好的解决办法吗?类似于自定义的
谢谢您的最佳选择是将布局
属性设置为排列
。这样做的另一个好处是,您可以按照自己想要的方式在HTML标记中定位各个单选按钮,而标准的
仅支持布局属性页面方向和行方向并呈现表格
然而,在使用全新的JSF2.0 Tomahawk库来满足您的功能需求,并添加
功能,以便在ajaxical Power的帮助下禁用/启用必要的组件时,不幸的是,我在Tomahawk中遇到了一个bug。在
内部,
错误地将其客户端ID而不是
中的一个作为ajax调用的参数,这导致ajax函数中断。我把它报告为
我没有看到其他干净的解决方案来满足这个复杂的(至少在JSF组件术语中)需求。在Tomahawk的人修复它之前,最好的办法是引入一个临时的基于JS的解决方案来修复onload期间ajax调用的错误参数。仅供参考,以下是表单的外观:
<style>li { list-style-type: none; }</style>
...
<h:form>
<t:selectOneRadio id="tasks" value="#{bean.task}" layout="spread">
<f:selectItems value="#{bean.tasks}" />
<f:ajax event="click" render="@form" />
</t:selectOneRadio>
<ul>
<li><t:radio for="tasks" index="0" /></li>
<li><t:radio for="tasks" index="1" />
<t:selectOneRadio id="processes" value="#{bean.process}" layout="spread" disabled="#{bean.task != 'task2value'}">
<f:selectItems value="#{bean.processes}" />
<f:ajax event="click" render="@form" />
</t:selectOneRadio>
<ul>
<li><t:radio for="processes" index="0" /></li>
<li><t:radio for="processes" index="1" /></li>
<li><t:radio for="processes" index="2" />
<h:inputText value="#{bean.otherProcess}" disabled="#{bean.process != 'process3value'}" />
</li>
</ul>
</li>
<li><t:radio for="tasks" index="2" />
<ul>
<li><h:inputText value="#{bean.brand1}" disabled="#{bean.task != 'task3value'}" /></li>
<li><h:inputText value="#{bean.brand2}" disabled="#{bean.task != 'task3value'}" /></li>
</ul>
</li>
</ul>
</h:form>
li{列表样式类型:无;}
...
-
-
-
很遗憾,标准JSF实现不支持这样灵活的radiobutton组件 像往常一样棒!非常感谢。我还没有和我的脸一起工作过,但我会尝试一下。再次感谢!注意,“MyFaces”实际上是另一个JSF实现(与Mojarra竞争)。你不应该用MyFaces来代替Mojara。Tomahawk是MyFaces开发的一个扩展组件库,但是您可以在Mojarra或任何其他JSF实现中使用它。