【问题标题】:JavaBean Introspection in Servlets [Tomcat]Servlet 中的 JavaBean 自省 [Tomcat]
【发布时间】:2009-09-09 11:29:54
【问题描述】:

什么是等效的“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);

没有其他方法可以轻松做到这一点吗?

【问题讨论】:

  • 提问的目的是什么?

标签: jsp servlets jsp-tags javabeans


【解决方案1】:

每个 jsp 编译器都会产生不同的结果。使用commons beanutils 它看起来有点像

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

请注意,它不处理数组和其他特殊情况。

另外,这也是为什么您通常使用诸如 SpringStrutsWicket 等 Web 框架的原因——它只是一个样板代码,无论如何您都必须编写验证代码。

【讨论】:

  • 原来我可以直接在我的 servlet 上使用它们。很抱歉在询问之前没有尝试。但是,如果在另一个容器上使用,我认为这不起作用。谢谢你的链接,大卫。
猜你喜欢
  • 1970-01-01
  • 2012-11-24
  • 1970-01-01
  • 2019-06-14
  • 1970-01-01
  • 2011-02-20
  • 2010-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多