Spring 3 - Доступ к messages.properties в jsp - PullRequest
4 голосов
/ 01 февраля 2011

Я недавно использую пружину 3 и застрял на этом некоторое время.

Знаете ли вы, как я могу получить доступ к messages.properties из jsp.Например, в контроллере я установил значение для моей модели:

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, а затем в форме.

Спасибо,

Ответы [ 2 ]

13 голосов
/ 01 февраля 2011

Используйте <spring:message> из spring taglib:

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

, где taglib импортируется как

<%@ taglib prefix = "spring" uri = "http://www.springframework.org/tags" %>
0 голосов
/ 15 марта 2015

Вы можете использовать ${msg.getMessage('MSG_CODE')} в JSP, если вы поместите преобразователь сообщений в 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')}.Большим преимуществом этого подхода является то, что вы можете использовать Message даже внутри тегов Spring Form.<spring:message code="MESSAGE_CODE" /> нельзя использовать внутри тегов Spring Form.

<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>

Еще лучше, если вы внедрите собственный Interceptor (в частности, метод postHandle), чтобы поместить messageResolver в ModelAndView, а не писатьодин и тот же код во всех контроллерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...