【问题标题】:How I can change the value of "selectOneMenu" without restart the "inputText"?如何在不重新启动“inputText”的情况下更改“selectOneMenu”的值?
【发布时间】:2014-06-10 05:05:41
【问题描述】:

我有下一个代码:

<h:form id="form" >
    <h:panelGrid >
        <p:inputText placeholder="Name" value="#{controladorGestionGrados.otherValue}" />
        <p:selectOneMenu value="#{controladorGestionGrados.value}" >
            <f:selectItem itemValue="A" itemLabel="A" />
            <f:selectItem itemValue="B" itemLabel="B" />
            <f:selectItem itemValue="C" itemLabel="C" />
            <p:ajax update=":form"  />
        </p:selectOneMenu>
        <p:outputLabel id="someText"
                       value="Some text" 
                       rendered="#{controladorGestionGrados.value eq 'C'}" />
    </h:panelGrid>
</h:form>

首先:我在 inputText 中写任何东西。 第二:我选择选项C。

之后,会显示 outputLabel “Some text”,但会重置 inputText。

如何在不重新启动“inputText”的情况下更改“selectOneMenu”的值?

我试过了:

<p:ajax update="someText"  />

但实际上 inputText 不会重置,但 outLabel 不会显示。

【问题讨论】:

  • 您可以将输入文本绑定到支持 bean 中的字符串,然后在模糊时自动提交。
  • 这是一个虚拟示例,实际上我的代码更复杂,但我也遇到了同样的问题。 inputext 是从支持 bean 绑定的。如何在模糊时自动提交?

标签: ajax jsf primefaces selectonemenu


【解决方案1】:

包装你的&lt;p:outputLabel&gt;

<p:outputLabel id="someText" value="Some text" rendered="#{controladorGestionGrados.value eq 'C'}" />

带支架&lt;p:outputPanel&gt;

像这样:

<p:outputPanel id="someTextPanel">
<p:outputLabel id="someTextLabel" value="Some text" rendered="#{controladorGestionGrados.value eq 'C'}" />
</p:outputPanel>

并使用

更新持有者组件 (&lt;p:outputPanel&gt;)
<p:ajax update="someTextPanel" />

所以整个代码应该是这样的:

<h:form id="form" >
    <h:panelGrid >
        <p:inputText placeholder="Name" value="#{controladorGestionGrados.otherValue}" />
        <p:selectOneMenu value="#{controladorGestionGrados.value}" >
            <f:selectItem itemValue="A" itemLabel="A" />
            <f:selectItem itemValue="B" itemLabel="B" />
            <f:selectItem itemValue="C" itemLabel="C" />            
            <p:ajax update="someTextPanel" />
          </p:selectOneMenu>
       <p:outputPanel id="someTextPanel">
    <p:outputLabel id="someTextLabel" value="Some text" rendered="#{controladorGestionGrados.value eq 'C'}" />
    </p:outputPanel>
    </h:panelGrid>
</h:form>

【讨论】:

  • 太棒了!但是您了解它为什么起作用吗?实际上,这完全是关于在 ajax 更新事件时动态呈现的元素在 DOM 中的存在。如果元素不存在,则无法更新它..
  • 是的,先生,我明白了,总而言之:如果一开始不存在,之后就无法操纵。
猜你喜欢
  • 2011-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-25
  • 1970-01-01
相关资源
最近更新 更多