0

我在 JSF 中有一个 inputText 对象,比如说 inputText_A,它的值绑定到会话 Bean 对象的成员变量。它是双重类型。

<h:inputText value="#{theBean.theMemberVar}" />

并且这个 inputText_A 已经被初始化为 0.0。当 Bean 执行计算时,该值将更新回 Bean.theMemberVar。我已经在调试控制台中对其进行了跟踪,并且该值已更新为我的预期值。但是屏幕上的 inputText_A 仍然显示原始值,即 0.0。

我已经使用 outputText 进行了测试,我的预期输出显示在那里,但之后它在屏幕上变为只读。我希望在我的预期输出填充到 inputText_A 后它是可编辑的,因此我选择了 inputText 对象。

我知道当我们将一些值从 JSF 传递给 Bean 时,我们使用 inputText,而当一些值从 Bean 传递给 JSF 时,我们使用 outputText。但现在我想使用 inputText 将值从 Bean 传递给 JSF。我可以知道这可以做到吗?

4

1 回答 1

2

h:inputText通过(如果您需要此类功能)显示一些更新的值是完全可以的。你只需要有适当gettersetterbean 变量。

例如:

private String text;

// here you will update the input text - in your case method which does calculations
    public void changeText(){
        ...
        text = "updated"; 
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

还有你的 facelet (.xhtml):

        <h:inputText value="#{dummyBean.text}" />
        <h:commandButton value="Change text" actionListener="#{dummyBean.changeText}" />

inputText将在按钮单击时更新。

另一件事是,如果您通过 Ajax 更新您的内容。然后你需要重新渲染parent componentof theinputTextformof the inputText

    <h:commandButton immediate="true" value="Change text">
         <f:ajax event="click" render=":formID"  listener="#{dummyBean.changeText}"/>
    </h:commandButton>
于 2012-04-14T13:21:46.703 回答