1

Beans /フォーム処理を使用してログイン画面で入力パラメーターを取得し、それらのパラメーターを使用してユーザーをアプリケーションにログインさせます。

しかし、私はエラーが発生しています-

org.apache.jasper.JasperException:/loginbean.jsp(6,59)属性値request.getParameter( "userName")は "で引用され、val内で使用する場合はエスケープする必要があります

このエラーが発生するコード行は、以下に示すコードブロックの2行目です-(つまり、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")%>"/>

スクリプトレットとtaglibを混在させようとしています。これは無効です。どちらか一方を使用してください。userNameのような二重引用符が含まれる場合foo"bar、JSPタグの値は基本的にのようになりvalue="foo"bar"ます。これは構文的に無効です。

スクリプトレット死んだテクノロジーなので、完全に取り除くことをお勧めします。適切な方法は、ELを使用することです。ELでは、すべての要求パラメーターはMap<String, String>、暗黙の変数を介して使用できます${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 に答える