2013-05-19 41 views
0
數據響應

我有跟隨Managed Bean的類:處理來自JSF阿賈克斯的Javascript

import javax.faces.bean.ManagedBean; 
    import javax.faces.bean.SessionScoped; 

    import java.io.Serializable; 

    @ManagedBean 
    @SessionScoped 
    public class HelloBean implements Serializable { 

private static final long serialVersionUID = 1L; 

private String name; 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getSayWelcome(){ 
    //check if null? 
    if("".equals(name) || name ==null){ 
     return ""; 
    }else{ 
     return "Ajax message : Welcome " + name; 
    } 
    } 

} 

而且這個JSF文件:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
    xmlns:f="http://java.sun.com/jsf/core"  
    xmlns:h="http://java.sun.com/jsf/html"> 

<h:body> 
    <h3>JSF 2.0 + Ajax Hello World Example</h3> 

    <h:form> 

     <h:inputText id="name" value="#{helloBean.name}"></h:inputText> 
     <h:commandButton value="Welcome Me"> 
      <f:ajax execute="name" onevent="example" render="output" /> 
     </h:commandButton> 

     <h2><h:outputText id="output" value="#{helloBean.sayWelcome}" /></h2> 

    </h:form> 

</h:body> 

而且我調用這個javascript函數當ajax響應已經完成接收數據參數時:

function ejemplo(data){ 
     $('#tablaEjemplo').append('<table><thead><tr><th>User</th></tr></thead>'+ 
            '<tbody><tr><td>'+data.name+'</td></tr></tbody>   </table>'); 
     } 

我的抱負是當Ajax響應成功時,用輸入文本中插入的管理bean的用戶名打印表,但我不知道如何訪問參數(data.name顯然不工作)打印,我真的不知道如果f:ajax正在返回一些東西,或者我必須在某個地方設置(我想在管理bean ...),如格式JSON數據來檢索,並可以訪問我功能,不是嗎?有任何想法嗎?

+0

你完全忽略了JSF的觀點。看看JAX-RS的答案。 – BalusC

回答

1

如果你想顯示的名稱,爲什麼它不僅增加了這樣的AJAX渲染部分:

<h:commandButton value="Welcome Me"> 
    <f:ajax render="output" /> 
</h:commandButton> 

<h2><h:outputText id="output" value="#{helloBean.sayWelcome} #{helloBean.name}" /></h2> 

如果名稱爲null只會完全無法顯示。

+0

當然,我可以這樣做,但我想如何用JavaScript來做到這一點。 – Enot

+0

如果你想這樣做,這個答案可能是一個好的開始:http://stackoverflow.com/a/12198117/354831 –

+0

那麼,這不是我想要的(我不知道我是否解釋得很好) ,我將更簡單地提一下我的問題,正是我想要的是,當我提交h:form調用一個jquery.ajax函數來管理我的請求時,調用管理bean方法傳遞參數並返回數據,使得一個過程像append數據到HTML DOM等......我的問題是......有什麼辦法可以用JSF和Javascript來做到這一點? – Enot