如何让Trinidad tr:inputText立即回显其变化的值?

时间:2014-06-20 02:44:35

标签: jsf jsf-2 trinidad

我的xhtml文件中有以下Trinidad tr:inputText字段,该字段在我的托管bean类中绑定到“value1”; inputText字段的类型为:

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?
}

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

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

...更新

感谢您参考Jasper;我希望SAME inputText字段在调用setter方法并更改输入文本后(通过setter方法)更新自身。感谢您指向的参考页面;我尝试了以下内容,它使用partialTriggers属性:

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

1 个答案:

答案 0 :(得分:0)

您可以使用特立尼达Partial Page Rendering

这样做

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

您案例中的最小实施将是:

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