java - JSF 取消选择 selectOneRadio

标签 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>

最佳答案

如果我正确理解您的问题,我认为以下内容应该对您有所帮助。由于您想在再次单击单选按钮时取消选择它,因此您应该 - 正如您已经说过的 - 使用 ajax 监听器,该监听器在单击单选按钮时调用。 但首先,您必须在每次更改时保存单选按钮的值,因此您必须添加另一个事件监听器,该事件监听器在更改时提交单选按钮的值。 当再次单击所选按钮时,您可以检查单击了哪个按钮,然后检查您的 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 来完成整个事情。

关于java - JSF 取消选择 selectOneRadio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17810192/

相关文章:

java - 如何查找 token 子串?

jsf - JSF 2 中的密码验证

css - icefaces - 在对话框中使用自动完成

ajax - f :ajax not working on tomcat7/eclipse

jsf-2 - 带有 (ENUM) 转换器的复合组件和 SelectOneMenu

java - Selenium - 从两个显示器捕获屏幕截图

java - ExecutorService 在 REST API 中使用

java - PDFBox 没有将我想要的消息写入页面

java - 当我刷新 JSF 页面时,不记得所选行的顺序

JSF渲染阶段(为什么执行我的代码?)