在我看来,我可以使用表达式语言从当前请求中打印 POST 表单值:
<p>Foo Name: ${fn:escapeXml(param.fooName)}</p>
但是当我使用控制器中的注释param.fooName
将表单数据捕获到 Java 变量中时,不再填充 EL 变量:@FormParam
@FormParam("fooName") String fooName
完整的流程是这样的:
浏览器提交表单到
http://localhost:7101/myapp/rs/foo/new
:@POST @Path("/new") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.TEXT_HTML) public Response saveNew( @FormParam("fooName") String fooName // <--- ) { Map<String, Object> map = new HashMap<String, Object>(); // Do stuff here return Response.ok(new Viewable("/foo/new", map)).build(); }
视图从
new.jsp
:<%@ page contentType="text/html" pageEncoding="UTF-8" %> <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> <p>Foo Name: ${fn:escapeXml(param.fooName)}</p>
如果我删除该@FormParam("fooName") String fooName
行,则${fn:escapeXml(param.fooName)}
再次包含表单数据。
有没有办法在两个位置(Java 控制器和 JSP 视图)访问表单数据?