質問

Spring + JSP でハイパーリンクを作成する適切な方法は何ですか?単にコーディングするよりも良い方法があるはずです <a href="..."> 鬼ごっこ。たとえば、人物を表示するページを考えてみましょう。URLは people.htm. 。対応するコントローラーはデータベースからユーザーを取得し、オプションの列の並べ替えを実行します。JSP は次のようになります。

<table>
<tr>
  <td><a href="people.htm?sort=name">Name</a></td>
  <td><a href="people.htm?sort=age">Age</a></td>
  <td><a href="people.htm?sort=address">Address</a></td>
</tr>
...

これはURLとしてはダメな気がします people.htm JSP にハードコーディングされています。Spring に自動的にビルドさせる方法があるはずです。 <a> で定義された URL を使用したタグ servlet.xml.

編集:Spring フォームを使用する必要があるかもしれません。

役に立ちましたか?

解決

思い浮かぶのは JSTL 標準タグだけです <c:url>. 例えば:

<c:url var="thisURL" value="homer.jsp">
  <c:param name="iq" value="${homer.iq}"/>
  <c:param name="checkAgainst" value="marge simpson"/>
</c:url>
<a href="<c:out value="${thisURL}"/>">Next</a>

これでサーブレット マッピングなどは取得されませんが、何も取得できません。これは実際にプログラムで実行できるものではありません (結局のところ、サーブレットはさまざまな URL にマップできますし、通常は実際にマップします)。しかし、これで逃げ出すことができます。

他のヒント

純粋な Spring ではこの種の機能を見たことがありません (ただし、grails ではそのような機能が提供されています)。

特定のケースでは、ファイル部分を削除し、クエリ文字列のみを href 属性として使用することを検討してください。

<td><a href="?sort=name">Name</a></td>
<td><a href="?sort=age">Age</a></td>
<td><a href="?sort=address">Address</a></td>

これらのリンクは、クエリ文字列を現在の URL のパス コンポーネントに追加します。

リンクを作成するより良い方法は次のとおりです。

<a href="<%=request.getContextPath() %>/people">Name</a>

<%=request.getContextPath() %> は、正しい URI が考慮されることを確認します。

「sort」パラメータは、非表示フィールドを使用して、少しの JavaScript で値を変更できます。

<input type="hidden" name="sort" id="sort" value="name">

コントローラーのメソッドは次のようになります。

@RequestMapping("/people")
public String createUser(String sort) {

   ...

}

jsp の Spring MVC では、次のようになります。

次のものが使用できます。

一般的なハイパーリンク:

<a href="/Portfolio/login">Click Here</a>

コントローラーから渡す場合:

<a href="/Portfolio/${page}">Click Here</a>

JSPのタグ

<c:url var="URL" value="login">
<c:param name="param" value="${parameter}"/>
</c:url>
<a href="<c:out value="${URL}"/>">Click Here</a>

それが役に立てば幸い..:)

このパッケージを JSP ファイルにインポートします

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

新しいページまたは URL をリダイレクトしたい場合は、たとえばに使用します。

<a href='<c:url value="url of next page" />'>Home</a>
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top