如何让特立尼达tr:inputText立即响应其更改的值



我的xhtml文件中有以下特立尼达tr:inputText字段,该字段绑定到我的托管bean类中的"value1";inputttext字段的类型为:

org.apache.myfaces.trinidad.component.core.input.CoreInputText

<tr:inputText value="#{myBean.value1}" autoSubmit="true" immediate="true" valueChangeListener="#{myBean.textChangeListener}" styleClass="stylePageTextSmallColored">
</tr:inputText>
<tr:commandButton id="btnCommit" inlineStyle="width:20" immediate="true" text="Commit" action="#{myBean.doCommit()}" styleClass="styleButton">
</tr:commandButton>
public void textChangeListener(ValueChangeEvent e) {
    log.debug(">> textChangeListener: value=["+(String)e.getNewValue()+"]");
}
public String doCommit() throws Throwable {
    log.debug("In doCommit: value1="+value1);
    value1 = "("+value1+")";
    // I update my database with the modified value1 string here; the database has the correct
    // updated value1 string (with the parentheses).
    // How do I get the modified value1 (above) to echo back to the screen instantly
    // inside the doCommit() method with its changes?
}

当我输入这个字段并改变它的值然后按下"commit"按钮时,我可以看到它的值在doCommit()方法中从屏幕上正确获得,textChangeListener()方法表明它已被调用。我想对"value1"变量进行一些更改,并立即将其值回显到屏幕上,而无需再进行屏幕提交;这可以作为doCommit()方法的一部分或通过xhtml文件中的其他机制/标记来完成吗?

请注意,这里使用的是Trinidad,上面列出了输入文本类。

更新……

谢谢你的参考Jasper;我希望在setter方法被调用和输入文本被改变(由setter方法)之后,SAME inputText字段能够自我更新。感谢你所指向的参考页面;我尝试了以下方法,它通过使用partialTriggers属性来工作:

<tr:inputText id="myValue" value="#{myBean.value1}" autoSubmit="true" immediate="true" partialTriggers="myValue" valueChangeListener="#{myBean.textChangeListener}" styleClass="stylePageTextSmallColored"> </tr:inputText>

您可以使用特立尼达的部分页面渲染。

简而言之:您需要在您的输入中添加一个id属性,并在您引用输入组件的partialTriggers属性中添加一个tr:outputText组件。

在您的情况下,最小的实现将是:

<tr:inputText id="value1Input" 
              value="#{myBean.value1}"
              autoSubmit="true"
              immediate="true"/>
<tr:outputText value="value1: #{myBean.value1}"
               partialTriggers="value1Input"/>

相关内容

  • 没有找到相关文章

最新更新