【问题标题】:UI is not updating the backing bean [duplicate]UI 未更新支持 bean [重复]
【发布时间】:2017-04-01 01:49:38
【问题描述】:

这是我在 JSF 中的 UI 代码。该应用程序是从新加坡元到日元的小额货币转换。

<h:form>
            <h:inputText id="conversion" value="#{conversor.sgd}"></h:inputText>
         <h:commandButton value = "Convertir a yen">
            <f:ajax execute = "@all" render = "conversion_lista" event="click"/>
         </h:commandButton>
         <h2><h:outputText id = "conversion_lista" value = "Conversion: #{conversor.jpy}"/></h2>
      </h:form>

这是我的支持 bean:

@Named("conversor")
@Dependent
public class Conversor { 

    private int sgd;

    public Conversor() {
        sgd = 1; //initial value
    }

    public int getSgd(){
        return sgd;        
    }    

    public void setSgd(int sgd){
        this.sgd = sgd;
    }

    public int getJpy(){
        return sgd * 2; //fake
    }
}

我想点击commandButton,执行第一个inputText,改变backing bean中的sgd属性,然后通过之前计算新加坡元到日元的转换来渲染outputText。

但是输入没有传递给支持 bean。

我确实尝试过一些事情,比如让getJpy() 每次被调用时都返回一个随机数,并且每次我点击按钮时它都会呈现一个随机数。所以这意味着调用有效。但我无法将文本输入(新加坡元/新加坡元)传递给支持 bean 并进行正确的转换。

这里发生了什么?

【问题讨论】:

    标签: jsf cdi


    【解决方案1】:

    好的,我修好了。

    我用@RequestScoped 代替@Dependent

    我不知道我在做什么,但它有效。

    现在结果是我想要的,当我点击按钮时,转换发生在 UI 上。

    【讨论】:

    • “我不知道我在做什么,但它确实有效。” 然后从阅读一些好的基础教程开始
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 2011-11-23
    • 2017-11-06
    • 2015-07-03
    • 2018-06-18
    • 1970-01-01
    • 2012-04-21
    相关资源
    最近更新 更多