【问题标题】:How to set request.getParameter in jsp:setProperty如何在 jsp:setProperty 中设置 request.getParameter
【发布时间】:2011-06-27 14:18:12
【问题描述】:

我使用 beans/form 处理在登录屏幕上获取输入参数,然后使用这些参数尝试将用户登录到应用程序。

但是我得到一个错误-

org.apache.jasper.JasperException: /loginbean.jsp(6,59) 属性值 request.getParameter("userName") 用 " 引用,在 val 中使用时必须转义

出现此错误的代码行是下面给出的代码块中的第二行 - (即 name='userName' 的属性的代码行)

loginbean.jsp

<jsp:useBean id="db" scope="request" class="logbean.LoginBean" >
  <jsp:setProperty name="db" property="userName" value="<%=request.getParameter("userName")%>"/>
  <jsp:setProperty name="db" property="password" value="<%=request.getParameter("password")%>"/>
 </jsp:useBean>

LoginBean.java

package logbean;
public class LoginBean {
  String userName="";
  String password="";
  public String getUserName() {
  return userName;
  }
  public void setUsername(String username) {
  this.userName = userName;
  }
  public String getPassword() {
  return password;
  }
  public void setPassword(String password) {
 this.password = password;
  }
  }

【问题讨论】:

    标签: jsp javabeans http-request-parameters


    【解决方案1】:

    这里,

    <jsp:setProperty name="db" property="userName" value="<%=request.getParameter("userName")%>"/>
    <jsp:setProperty name="db" property="password" value="<%=request.getParameter("password")%>"/>
    

    您正在尝试混合 scriptlets 和 taglibs。这是无效的。使用其中之一。当userName 包含像foo"bar 这样的双引号时,JSP 标记的值基本上会像value="foo"bar" 这样结束。这在语法上无效。

    由于 scriptlets 是一种dead 技术,我建议完全摆脱它。正确的方法是使用EL。在 EL 中,所有请求参数都可以通过隐式变量${param}Map&lt;String, String&gt; 的形式使用。好好利用吧。

    <jsp:setProperty name="db" property="userName" value="${param.userName}"/>
    <jsp:setProperty name="db" property="password" value="${param.password}"/>
    

    或者,当所有参数名称与属性名称相同时,您也可以让 JSP 自动设置所有属性,如下所示:

    <jsp:setProperty name="db" property="*"/>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2010-11-13
      • 2012-05-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多