0

これに相当する「サーブレットコード」は何ですか:

<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);

これを簡単に行う方法は他にありませんか?

4

1 に答える 1

1

jsp コンパイラごとに異なる結果が得られます。commons beanutilsを使用すると、次のようになります。

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

配列やその他の特殊なケースを処理しないことに注意してください。

また、これが通常、 SpringStrutsWicketなどの Web フレームワークを使用する理由です。これは単なる定型コードであり、とにかく検証をコーディングする必要があります。

于 2009-09-09T12:05:04.473 に答える