在占位符内设置 <fmt:message> 标记

use*_*790 1 html java jsp properties

我有这个html代码:

<td  style="padding:1%; " width="80%"><form:textarea  name="reference"  path="" placeholder="insert_word"  width="100%" /></td>
Run Code Online (Sandbox Code Playgroud)

我想从 language.properties 文件中获取占位符单词,我有文件 langueage.properties:

insert_word=add your word here!
Run Code Online (Sandbox Code Playgroud)

我该如何使用<fmt:message>标签来做到这一点?我已经在 html 代码的开头添加了这一行:

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<fmt:setBundle basename="language"  />
Run Code Online (Sandbox Code Playgroud)

当我将<fmt:message>标签放在“值”内时,它工作正常,但在占位符内我收到一些错误:

<td  style="padding:1%; " width="80%"><form:textarea  name="reference"  path="" placeholder=<fmt:message key="insert_word" />  width="100%" /></td>
Run Code Online (Sandbox Code Playgroud)

错误:

org.apache.jasper.JasperException: /WEB-INF/views/ContactForm.jsp (line: 188, column: 98) quote symbol expected
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:42)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:443)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:89)
    org.apache.jasper.compiler.Parser.parseAttribute(Parser.java:224)
    org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:162)
    org.apache.jasper.compiler.Parser.parseAttributes(Parser.java:153)
    org.apache.jasper.compiler.Parser.parseCustomTag(Parser.java:1229)
                              .........
Run Code Online (Sandbox Code Playgroud)

如果我添加一些 qoute (" "/' ') 我会在里面得到这一行:

"<fmt:message key="insert_word" />"
Run Code Online (Sandbox Code Playgroud)

不是 insert_word 的翻译。

我不能做什么?

JB *_*zet 6

不得在另一个 JSP 标记的属性内使用 JSP 标记。

但你可以使用变量:

<%-- translate the message key and store it in a variable --%>
<fmt:message key="insert_word" var="insertTranslation" />

<%-- use it as placeholder of textarea --%>
<form:textarea  name="reference"  path="" placeholder="${insertTranslation}" width="100%" />
Run Code Online (Sandbox Code Playgroud)