2013-10-22 65 views
0

JSF代碼我怎樣才能把從servlet的(了request.setAttribute( 「studentProfile」,allProfile))數據JSF

<h:dataTable value="#{requestScope.allProfile}" var="allProfile"> 
<h:column>     
<f:facet name="header">StudentID</f:facet>   
<h:inputText value="#{allProfile.studentId}" 
size="10" rendered="#{allProfile.canEdit}" /> 
<h:outputText value="#{allProfile.studentId}" 
rendered="#{not allProfile.canEdit}" /> 
</h:column>` 

的Servlet

private void doProcess(HttpServletRequest request, 
    HttpServletResponse response) throws ServletException, IOException, Exception { 
    StudentManager stuManager = new StudentManager(); 
    List<studto>allProfile = stuManager.getAllstudentProfile(); 
    request.setAttribute("studentProfile", allProfile); 
    RequestDispatcher rd = request.getRequestDispatcher("/ViewPage.xhtml"); 
    rd.forward(request, response); 
} 

我已經能夠從把我的數據數據庫直到servlet。但我無法在xhtml頁面中獲取數據。我是否需要創建faces-config來編寫託管bean?

+0

JSP背後的關鍵思想是它有一個BackingBean http://docs.oracle.com/javaee/5/tutorial/doc/bnaqm.html –

+0

請學習JSF,這已在基礎知識中介紹過。 [StackOverflow JSF wiki](http://stackoverflow.com/tags/jsf/info)有很好的資源。 –

+0

@ user2310289這些資源用於舊的JSF 1.2。請注意,自從[2013年10月3日](https://javaserverfaces.java.net/)以來,JSF已經在JSF 1.2和JSF 2.0之間改變了很多**,並且目前在JSF 2.2.4中。 –

回答

0

對於爲JSF表單準備表單數據的工作,servlet完全是錯誤的工具。您應該只是在與JSF表單關聯的JSF支持bean的(後)構造函數中完成這項工作,就像每個JSF教程中所演示的一樣。

E.g.

<h:dataTable value="#{bean.allProfile}" var="allProfile"> 
    <h:column> 
     <f:facet name="header">StudentID</f:facet>   
     <h:inputText value="#{allProfile.studentId}" 
      size="10" rendered="#{allProfile.canEdit}" /> 
     <h:outputText value="#{allProfile.studentId}" 
      rendered="#{not allProfile.canEdit}" /> 
    </h:column> 

與支持bean:

@ManagedBean 
@RequestScoped 
public class Bean { 

    private List<studto> allProfile; 

    @PostConstruct 
    public void init() { 
     allProfile = new StudentManager().getAllstudentProfile(); 
    } 

    public List<studto> getAllProfile() { 
     return allProfile; 
    } 

} 

現在只要在瀏覽器地址欄中打開的頁面由/ViewPage.xhtml(假設你已經映射在*.xhtml<url-pattern>FacesServlet)。

順便說一句,我會在你的Java naming conventions工作。類別名稱必須以大寫字母開頭