我的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>
答案 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"/>