【问题标题】:Spring 3 - Accessing messages.properties in jspSpring 3 - 在 jsp 中访问 messages.properties
【发布时间】:2011-02-01 15:31:45
【问题描述】:

我是使用 spring 3 的新手,并且已经在此问题上停留了一段时间。

你知道如何从 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 然后在表单中它工作正常。

谢谢,

【问题讨论】:

    标签: validation spring-mvc


    【解决方案1】:

    使用来自spring 标签库的<spring:message>

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

    taglib 的导入位置

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

    【讨论】:

    • 是否可以在不使用标签的情况下从 messageSource 获取消息,我的意思是像 ${msg['code']} 这样的表达式?
    • @marioosh:我想,没有简单的方法。
    【解决方案2】:

    如果将消息解析器放入控制器中的模型(或模型和视图)中,则可以在 JSP 中使用${msg.getMessage('MSG_CODE')}

    // 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 Form Tags 中使用 Message。 &lt;spring:message code="MESSAGE_CODE" /&gt; 不能在 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>
    

    最好实现一个自定义拦截器(特别是 postHandle 方法)将 messageResolver 放入 ModelAndView 中,而不是在所有控制器中编写相同的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-21
      • 1970-01-01
      • 2023-01-08
      • 2014-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-26
      相关资源
      最近更新 更多