JSF渲染组件ajax单选按钮选择

时间:2015-09-11 13:59:58

标签: javascript ajax jsf

此问题是JSF Primefaces Radio Button show/hide/enable a textarea的后续行动 通过将inputTextArea包装在panelGroup中来解决这两个问题中的一个问题,但是当状态为2(= No)时,我仍然需要弄清楚如何在表单加载时不显示inputTextArea,但只显示第2栏下的无线电正在切换。


enter image description here

    <p:column ...>
        <p:selectOneRadio ...>
        ...
            <p:ajax update="reason" />
        </p:selectOneRadio>
    </p:column>
    <p:column headerText="Reason For Attribute Failure">
      <h:panelGroup id="reason">
        <h:inputTextarea value="#{qAndA.fail_reason}" rendered="#{qAndA.toggle_value == '2'}" />
      </h:panelGroup>

        <h:outputText value="" rendered="#{qAndA.toggle_value == '1' or qAndA.toggle_value == '3'}" />
     <h:outputText value="#{qAndA.fail_reason}" rendered="#{qAndA.toggle_value == '2' or qAndA.toggle_value == '4'}" />

    </p:column>

也许状态代码存在缺陷:

  • 0 =尚未输入
  • 1 =是
  • 2 =没有,有理由
  • 3 =不适用
  • 4 =否最终解决了

我宁愿不必修改状态代码,而是添加另一个中间代码,这样的东西可能会起作用:

  • 2 =显示原因框
  • 2.5表示没有理由

除修改状态代码外还有其他选择吗?

1 个答案:

答案 0 :(得分:0)

那么真正的答案是,如果你不想显示它,那么在加载bean时没有值为2。但你已经知道了。你问的是你的主观性以及你想做的事情。你没有问题,这更像是一个设计问题。说完这里就是一个:

也许你想要有两个条件:

<h:inputTextarea value="#{qAndA.fail_reason}" rendered="#{qAndA.toggle_value == '2' and bean.AnotherCondition}" />

如果你想得到一个@ViewScoped bean来监听你在帖子中谈论的点击(不确定点击是什么)。监听单击并具有布尔属性,一旦单击已注册(可能使用动作侦听器),您可以将其设置为true。这样,textarea只会在点击时显示。