这个等效的“servlet代码”是什么:
<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 :(得分:1)
每个jsp编译器都会产生不同的结果。使用commons beanutils它会看起来像某种
for(Enumeration pnames = request.getParameterNames();pnames.hasMoreElements();) {
String name = pnames.nextElement();
BeanUtils.setProperty(bean,name,request.getParameter(name));
}
请注意,它不处理数组和其他特殊情况。
此外,这就是为什么通常使用Spring,Struts,Wicket等网络框架的原因 - 它只是一个样板代码,您必须编写验证代码反正。