Java JSF selectOneRadio/commandLink
这是我和oneRadio的想法Java JSF selectOneRadio/commandLink,java,jsf,jsf-2,selectoneradio,Java,Jsf,Jsf 2,Selectoneradio,这是我和oneRadio的想法 这里是commandLink的链接: <h:commandLink value="YES" action="#{controller.setMyboolean(true)}"/> <br/> <h:commandLink value="NO" action="#{controller.setMyboolean(false)}"/> 在我的应用程序中,我想用显示或禁用我的表。例如,如果我选择了第一个单选按钮,则会显示表
这里是commandLink的链接:
<h:commandLink value="YES" action="#{controller.setMyboolean(true)}"/>
<br/>
<h:commandLink value="NO" action="#{controller.setMyboolean(false)}"/>
在我的应用程序中,我想用
显示或禁用我的表。例如,如果我选择了第一个单选按钮,则会显示表格。我不需要单击
来更改值myboolean
。因此,我对我的应用程序的预期反应必须像一个
。我点击它,数值改变,表格显示出来。但是在我的例子中,我想使用
,除非您在幕后设置了它,否则问题很可能是您需要实现一个转换器来处理字符串“true”和“false”到布尔值的转换。在commandLink
中,EL中指定的操作将布尔值传递给函数。但是,在selectOneRadio
示例中,您提交的是一个字符串
有关更多信息,请查看:这非常好用:
<h:selectOneRadio value="#{controller.myboolean}" valueChangeListener="#{controller.save}" immediate="true" onchange="this.form.submit()">
<f:selectItem itemValue="#{true}" itemLabel="Yes"/>
<f:selectItem itemValue="#{false}" itemLabel="No"/>
</h:selectOneRadio>
我建议您使用primefaces扩展名。对于一些布尔值来说,这是一些不错的组件。。。比如:
您还可以使用primefaces的布尔按钮,如:
不管怎样,
如果你能灵活使用另一个组件,我希望这对你有帮助
然后选择不同的Radio。。。如果你有自由的话
要向项目中添加更多依赖项
再见我的问题是,如果我点击了其中一个单选按钮,myboolean的值就不会改变……这是真的代码还是你试图在没有实际测试的情况下从头顶随意写下的代码?setmyboolean
不是有效的setter方法名称,{true}
和{false}
值无效。在未来的问题中,请发布真实代码。嗯。我想你应该更容易理解我的问题。。。但我将来会更加关注它,……是的,但这可能是浪费时间。人们不会乐意花时间解释{true}
和{false}
是如何错误的,你应该使用{true}
和{false}
或者只是真的
和假的
,然后收到一条类似“对不起,我的打字错误”的评论或者像那样毫无礼貌的事。不要用绳子。。。观看编辑。。。这不是问题所在。我的命令链接的功能是一个默认的构造函数,我可能仍然不理解您想要做什么,但从我所看到的情况来看,这可能是因为表单没有提交。单击commandLink
将提交值,而选择单选按钮将仅在提交表单时设置值。似乎您需要添加一个onChange事件侦听器来提交字段,或者使用一个提交表单的commandButton
。是的,onChange事件侦听器可能是一个解决方案!感谢您对事件侦听器的想法@JavaNullPointer为了以防万一,您应该知道这个事件监听器应该由ajax调用来处理,否则在提交表单之前不会触发事件(使用ui命令组件,如
)。但随之而来的是另一个问题:您真的需要ajax在用户每次更改单选按钮选择时设置这个值吗?如果只是出于演示目的,效果可以通过普通JavaScript处理,并在表单提交上设置true
或false
值以处理您的数据。看起来您对web编程了解不多,而不是JSF 2
。这将是很好的检查一些网页,如中提到的。这可以满足您的需要,但这是一个很好的例子,说明您在现实世界的web应用程序中不必这么做。
public void speichereRadioButtons(ValueChangeEvent vce){
boolean temp=(Boolean) vce.getNewValue();
setmyBoolean(temp);
FacesContext.getCurrentInstance().renderResponse();
}