2011-02-01 15 views
4

私はspring 3を使用して新しいですし、しばらくこのままで立ち往生しています。Spring 3 - jspのmessages.propertiesへのアクセス

jspからmessages.propertiesにアクセスする方法を知っていますか。

model.setError("user.not.found") 

messages.properties:たとえば、コントローラに私は私のモデルに値を設定し

user.not.found=Sorry, we haven't been able to found this user 

とJSPに私が行うことができるようにしたい

${model.error} 

「申し訳ありません...」と表示されます。しかし、私はいつでも "user.not.found"を取得します。これは、@Valid ...、bindingResult、そしてフォームの中で使用するとうまくいきます。

おかげで、

答えて

13

使用<spring:message>springのtaglibから:あなたにメッセージリゾルバを置く場合は、JSPで${msg.getMessage('MSG_CODE')}を使用することができるのtaglibが

<%@ taglib prefix = "spring" uri = "http://www.springframework.org/tags" %> 
+1

そして、taglibのリファレンスは次のとおりです。http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/spring.tld.html –

+0

ありがとう、実際には動作します! – tsunade21

+0

タグを使わずにmessageSourceからメッセージを取得することはできますか?$ {msg ['code']}のような表現を意味しますか? – marioosh

0

としてインポートされ

<spring:message code = "${model.error}" /> 

コントローラのModel(またはModelAndView)。

// In a controller class 

... 

@Autowired 
private MessageResolver messageResolver; 

... 

@RequestMapping(value="/edit") 
public ModelAndView getSomething(MyFormData formData, 
           ModelAndView mv) { 
    mv.setViewName("TARGET_VIEW"); 

    // Do some controller things... 

    Map<String, Object> map = new HashMap<String, Object>(); 
    map.put("msg", messageResolver); 

    mv.addAllObjects(map); 

    return mv; 
} 

そして、JSPでは${msg.getMessage('MESSAGE_CODE')}を使用できます。 このアプローチの大きな利点は、Springフォームタグ内でもMessageを使用できることです。 <spring:message code="MESSAGE_CODE" />はSpringフォームタグ内で使用できません。

<form:select path="domainObj1.property1" cssClass="form-control"> 
    <form:option value="" label="--${msg.getMessage('L01006')}--" /> 
    <form:options items="${selection.selectionList}" itemValue="code" itemLabel="codeVal"/> 
</form:select> 

それも、より良いあなたがすべてのコントローラで同じコードを書くのではなくのModelAndViewにmessageResolverを置くために、カスタムのInterceptor(具体的には、postHandle方式)を実装することです。

関連する問題