2011-05-02 142 views
2

我這3場在JSF頁面如何更新頁面上顯示的值,而無需刷新

<h:inputText id="val1" value="#{managedBean.val1}"/> 
<h:inputText id="val2" value="#{managedBean.val2}"/> 
<h:outputText value="#{managedBean.result}"/> 

,我也有一個支持bean這個屬性:

@ManagedBean 
@RequestScoped 
public class NewOfferSupportController { 

    private String val1; 
    private String val2; 
    private String result; 

//Get set methods... 
} 

我想當某些值插入字段val1和val2而不刷新頁面時,outputText元素會自動更改其值。 結果變量應該這樣計算(據計算百分比):(VAL1 VAL2 *)/ 100

你能給我一隻手解決一些我的疑惑?:的

我知道這樣做這我需要像JavaScript或AJAX的東西。你認爲應該是最好的辦法嗎?

我很想知道如何用AJAX做到這一點,你能給我一些提示嗎?

因爲我需要的字段是字符串類型,我的驗證應該如何實現?

我可以避免在字段中輸入非數字的字符(如果按下的鍵不是數字,在輸入字段中根本不出現)?

+0

我不是太熟悉的Web應用程序,但你看着[性質C hange Listeners](http://download.oracle.com/javase/tutorial/javabeans/properties/bound.html)? – mre 2011-05-02 02:09:06

回答

4

如果是這種簡單的計算,它不需要調用服務器,那麼你應該用客戶端JavaScript的解決方案


走但正如你喜歡做的使用Ajax在這裏你去..

您可以使用<f:ajax>render屬性,使這件事情發生使用AJAX 。

<h:form> 
     <h:inputText value="#{managedBean.val1}" > 
     <f:ajax event="keyup" render="result" listener="#{managedBean.someThingToDoListener}"/> 
     </h:inputText> 
     <h:inputText value="#{managedBean.val2}" > 
     <f:ajax event="keyup" render="result" listener="#{managedBean.someThingToDoListener}"/> 
     </h:inputText> 

     <h:outputText id="result" value="#{managedBean.result}"/> 
</h:form> 

@ManagedBean(name = "managedBean") 
public class Bean { 
    private String val1; // getter and setter 
    private String val2; // getter and setter 
    private String res; // getter and setter 
    ... 

    public void someThingToDoListener(AjaxBehaviorEvent event) { 
     //res = some processing 
    } 

} 

請參見

1

如果您使用的是java,那麼獲取JQuery。一旦你已經處理,並得到想要的結果與你的代碼,你可以只搶的DOM元素要在把它做一些事情,像這樣:

$("#result").html(newData); 
相關問題