2012-04-24 12 views
17

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

"23/11/2010"

*

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

"2010年1月1日"

:時々、文字列は次のようである可能性があります。 *

"23"、 "11"、 "2010": は、私は、3つの異なる部分文字列で文字列を分割するために何かをする必要があります。 **

私はこれらのような三つの異なるテキストフィールド、内部でそれらの一つ一つを配置する必要がありますので、これは次のとおりです。

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

私はまだ作業例を見つけることができませんでした。

ありがとうございます!

答えて

42

これには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()でないようにする必要があります。

+0

非常に教育した

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

はにつながります!ありがとうBalusC ... – Lucas

+0

あなたは大歓迎です。 – BalusC

+1

これに対してforeachを使用できますか? – Wax

4

JSTL fnライブラリを使用してください。彼らはそこにsplitを持っています。

7

JSTLが有用なタグ<c:forTokens>を持っていることは、私が行ったようにこの質問を見つけた他の誰にとっても注目に値する。 これは、入力ストリングを指定された区切り文字で分割し、その結果のトークンの集合を反復処理します。

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

A 
B 
C 
D 

ドキュメント:JSTL core Tag forTokens

関連する問題