自定义标记中的可选属性,可防止名称与模型属性冲突

时间:2017-09-11 10:22:43

标签: jsp

在自定义标签中,我有一个像

这样的可选属性
<%@ attribute name="message" required="false" type="java.lang.String" %>

并在设置属性时执行某些操作

<c:if test="${not empty message}">do something</c:if>

但是当有一个变量&#34;消息&#34;与范围会话或请求混合在一起。

是否有可能决定变量是来自模型还是属性?

2 个答案:

答案 0 :(得分:0)

一种丑陋的方法是将属性与范围页面一起使用并将其放入另一个变量中:

<% 
int scope = PageContext.PAGE_SCOPE;
Object msg = jspContext.getAttribute("message", scope);
jspContext.setAttribute("messageattribute", msg);
%>

答案 1 :(得分:0)

有一种更简单的方法。属性有自己的页面范围。访问它们时,只需命名范围:

$ {pageScope.message}