UI未更新辅助bean

时间:2017-04-01 01:49:39

标签: jsf cdi

这是我在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>

这是我的支持豆:

@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,使支持bean中的sgd属性发生变化,然后通过先前计算从新加坡元到日元的转换来渲染outputText。

但是输入没有传递给辅助bean。

我确实尝试了一些类似的事情,让getJpy()每次调用都会返回一个随机数,并且每当我点击按钮时它都会呈现一个随机数。这意味着呼叫有效。但是我无法将文本输入(sgd / singaporean dollar)传递给支持bean并进行正确的转换。

这里发生了什么?

1 个答案:

答案 0 :(得分:0)

好的,我修好了。

我使用@RequestScoped代替@Dependent

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

现在结果就是我想要的,当我点击按钮时,转换会在UI上进行。