【问题标题】:JSF Deselect selectOneRadioJSF 取消选择 selectOneRadio
【发布时间】:2013-07-23 12:27:42
【问题描述】:

是否可以取消选择/取消选中项目是<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>

【问题讨论】:

  • 你的意思是手动还是什么?
  • @Kayaman 是的,onclick 事件可能是。我尽量理解,但生成的 html 并不能帮助我找到解决方案
  • 如果您只想取消选中单选按钮,请使用 JavaScript。但是,如果想立即更改值,您可以在所需组件上绑定事件处理程序,在事件触发时将 bean 上的值设置为 null 并在单选按钮上进行更新。
  • @user1983983 您建议事件处理程序使用什么类型的事件?
  • 请详细说明您想做什么。

标签: java jsf jsf-2 primefaces


【解决方案1】:

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

【讨论】:

  • 我不明白什么变化事件。我可以在没有它的情况下获得值 selectedImageId,只使用事件单击的侦听器。
  • 当值尚未提交时,您无法在 bean 中检查单击的单选按钮是否已被单击。因此,每次单选按钮的值发生变化时,您都必须提交它。
猜你喜欢
  • 1970-01-01
  • 2014-02-28
  • 1970-01-01
  • 2012-10-28
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 2014-01-06
相关资源
最近更新 更多