2009-09-09 92 views
0

什麼是相當於 「servlet代碼」 此:JavaBean的自省Servlet中[Tomcat的]

<jsp:useBean id="user" class="beans.UserBean" scope="session"/> 
<jsp:setProperty name="user" property="*"/> 

Tomcat的轉換這:

beans.UserBean user = null; 
synchronized (session) { 
    user = (beans.UserBean) _jspx_page_context.getAttribute("user", PageContext.SESSION_SCOPE); 
    if (user == null) { 
     user = new beans.UserBean(); 
     _jspx_page_context.setAttribute("user", user, PageContext.SESSION_SCOPE); 
    } 
} 

org.apache.jasper.runtime.JspRuntimeLibrary.introspect(_jspx_page_context.findAttribute("user"), request); 

是否有容易這樣做沒有別的辦法?

+0

你的問題是什麼? – dfa 2009-09-09 11:31:52

+0

問題的目的是什麼? – adatapost 2009-09-09 11:32:04

回答

1

每個jsp編譯器都會產生不同的結果。使用commons beanutils它會尋找一種

for(Enumeration pnames = request.getParameterNames();pnames.hasMoreElements();) { 
    String name = pnames.nextElement(); 
    BeanUtils.setProperty(bean,name,request.getParameter(name)); 
} 

注意,它不處理陣列和其他特殊情況下的東西。

此外,這也就是爲什麼通常使用一個Web框架,如SpringStrutsWicket,等等 - 它只是一個鍋爐板代碼,你總得去編寫你的驗證。

+0

原來我可以直接在我的servlets上使用它們。對不起,在詢問之前不要嘗試。但是,我認爲這不適用於其他容器。感謝您的鏈接,大衛。 – 2009-09-09 13:07:36