1

我使用 bean/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;
  }
  }
4

1 回答 1

2

这里,

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

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

由于scriptlets是一种技术,我建议完全摆脱它。正确的方法是使用EL。在 EL 中,所有请求参数都可以Map<String, String>通过隐式变量作为​​ a 使用${param}。好好利用它。

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

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

<jsp:setProperty name="db" property="*"/>
于 2011-06-27T14:26:39.243 回答