JSF取消选择selectOneRadio

时间:2013-07-23 12:27:43

标签: java jsf jsf-2 primefaces

是否可以取消选中/取消选中<p:selectOneRadio><h:selectOneRadio/>项?

<h:selectOneRadio value="#{adminManageBroadcastController.selectedImage}" converter="#{broadcastImageConverter}">
    <f:selectItems value="#{adminManageBroadcastController.fileUploadList}"  var="image"
        itemValue="#{image}"
        itemLabelEscaped="false"
        itemLabel="&lt;img src=&quot;#{facesContext.externalContext.requestContextPath}#{image.url}&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;broadcast_img&quot;&gt;"
     />
</h:selectOneRadio>

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,我认为以下内容可以帮到你。如果你想再次点击它时取消选择单选按钮,你应该 - 正如你所说的那样 - 使用一个在单选按钮的click上调用的ajax监听器。 但首先,您必须在每次更改时保存单选按钮的值,因此您必须添加另一个eventlistener,它在change上提交单选按钮的值。 现在再次单击所选按钮时,您可以检查单击了哪个按钮,然后检查您的bean是否该按钮是所选按钮(如果它具有在bean上设置的值)。如果按钮是选定按钮,则将bean上的引用值设置为null并更新selectOneRadio。 我不知道你的应用程序的结构是什么,所以我将尝试在代码中描绘我的意思:

<h:selectOneRadio value="#{adminManageBroadcastController.selectedImage}" converter="#{broadcastImageConverter}">
    <f:selectItems value="#{adminManageBroadcastController.fileUploadList}"  var="image"
           itemValue="#{image}"
           itemLabelEscaped="false"
           itemLabel="&lt;img src=&quot;#{facesContext.externalContext.requestContextPath}#{image.url}&quot; width=&quot;20&quot; height=&quot;20&quot; alt=&quot;broadcast_img&quot;&gt;"
     />
    <p:ajax event="change" process="@parent" partialSubmit="true"/>
    <p:ajax event="click" process="@this" listener="#{adminManageBroadcastController.deselectImage()}" update="@parent"/>
</h:selectOneRadio>

另一种选择是使用JavaScript完成整个事情。