0

私はJSTLの世界に不慣れなので、優しくしてください。すでに読んでいますが、これに対する解決策が見つかりませんでした。

入力ボックスの先頭と末尾の両方から空白を削除したいので、ユーザーが送信ボタンをクリックすると、コントローラは空白のない文字列を受け取ります。

私はすでにこれで問題を抱えているため、他のフレームワークを使用するように勧めないでください。これをマスターしたら、次のステップに進みます。

これが私のJSPコードです。私はこれを試しましたが、うまくいきません.渡した値をコンテキストが保持していないようです.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<LINK REL=StyleSheet HREF="resources/index-style.css" TYPE="text/css">
<title>Submit a new academic!</title>
</head>
<div class="home">
    <a href="index"><img src="resources/home.png" /></a>
</div>
<div class="list">
    <h1>This is the place where you register a new Academic on the
        system!</h1>
</div>
<p></p>

<div class="list">
    <form action="addAcademicAction" method="post">
        <p>Submit your name:</p>
        <input type="text" name="academicName"><br>
        <p>Level of education</p>
        <input type="radio" name="educationLevel" value="student" checked>Student<br>
        <input type="radio" name="educationLevel" value="csstudent">Computer
        Science Student<br> <input type="radio" name="educationLevel"
            value="professor">Professor<br> <br>
        <button name="submit" type="submit" value="HTML">Add
            Academic!</button>
    </form>
</div>

<c:if test="${context.request.method=='POST'}">
    <c:set var="academicName" value="${fn:trim(param.academicName)}"/>
</c:if>

<body>
</body>
</html>
4

1 に答える 1

1

JSP の仕組みを理解していないようです。JSP はサーバー側で実行されます。これは、単にサーブレットを作成する別の方法です。その目的は、ブラウザーに送信される HTML を生成することです。

タグは、<c:set>ページ スコープ属性を設定するために使用されます。これは、現在の JSP 実行に対してローカルな変数であることがわかります。したがって、上記はこれとほぼ同等です。

out.println("<html>");
out.println("<head>");
...
out.println("</div>");
String academicName = null;
if (request.getMethod().equals("POST")) {
    academicName = request.getParameter("academicName").trim();
}
out.println("</body>");
out.println("</html>");

したがって、明らかに、決して使用されないローカル変数を定義しています。

JSP によって生成されたフォームによって送信されたものをトリミングする場合、パラメーターをトリミングする必要があるのはこの JSP ではなく、フォーム送信を受け取るのは Spring コントローラーであり、パス「addAcademicAction」にマップされます。

于 2012-11-04T21:37:03.727 に答える