20

JSTLを使用してjspページ内で「/」で区切られた文字列を分割するにはどうすればよいですか?

私はこの形式の文字列を持っています:**

「2010年11月23日」

* 。場合によっては、文字列は次のようになります。*

「2010年1月1日」

* 。文字列を3つの異なる部分文字列に分割するには、何かをする必要があります。*

「23」、「11」、「2010」。

**これは、次のように、それぞれを3つの異なるテキストフィールド内に配置する必要があるためです。

<input type="text" value="23">/
<input type="text" value="11">/
<input type="text" value="2010">

まだ実用的な例は見つかりませんでした。

前もって感謝します!

4

3 に答える 3

51

fn:split()これには関数を使用できます。

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
...
<c:set var="dateParts" value="${fn:split(dateString, '/')}" />
...
<input type="text" name="day" value="${dateParts[0]}" />
<input type="text" name="month" value="${dateParts[1]}" />
<input type="text" name="year" value="${dateParts[2]}" />

日付形式が事前に検証されていることを確認してください:) .java.util.Dateではなくjava.lang.String. <fmt:formatDate>次に、最初に信頼できる固定文字列形式にフォーマットするために使用できます。それ以外の場合は、 によって配列の長さのチェックを追加し、 によってfn:length()潜在的な XSS 攻撃の穴を防ぐ必要がありますfn:escapeXml()

また、この関数は単なる文字シーケンスではなく、正規表現を引数として受け取ることに注意することも重要です。したがって、正規表現で特殊文字を表す文字を分割したい場合は、それらをバックスラッシュでエスケープする必要があります。にも適用される一般的なガイドラインについては、Java で文字列を分割する方法も参照してくださいfn:split()

于 2012-04-24T18:57:38.263 に答える
9

JSTL に便利なタグ があることは、(私が行ったように) 検索でこの質問を見つけた他の人にとっては注目に値します<c:forTokens>。これにより、指定された区切り文字で入力文字列が分割され、結果のトークンのコレクションが反復処理されます。

ここに示されているように、次のコード:

<c:forTokens items="A,B,C,D" delims="," var="mySplit">
   <c:out value="${mySplit}"/></br>
</c:forTokens>

次のようになります。

A
B
C
D

ドキュメント:トークンの JSTL コア タグ

于 2016-03-22T17:26:50.853 に答える
5

JSTL fn ライブラリを使用します。彼らはそこに分裂を持っています。

于 2012-04-24T18:56:39.683 に答える