无法从Struts2标记内部访问scriptlet变量



我正试图访问JSP 中struts2 s:if标记内的scriptlet变量

<%
Website website = (Website)request.getAttribute(Website.NAME);
out.println(website.isUkSite());  // prints true
 %>
<s:if test="#website.isIrishSite()">  // this is returning false 
....

实际上这个CCD_ 2应该评估为CCD_。问题出在哪里?

问题是在操作上下文中没有名为website的变量。为了让它发挥作用,你可以使用

<%
Website website = (Website)request.getAttribute(Website.NAME);
out.println(website.isUkSite());  // prints true
ActionContext.getContext().put("website", website); 
 %>

但是涂鸦是一个糟糕的选择,你可以删除这个代码并使用

<s:if test="#request.website.isIrishSite()">

这终于奏效了

<%
Website website = (Website)request.getAttribute(Website.NAME);
out.println(website.isUkSite());  // prints true
 %>
<s:if test="website.ukSite">    
  // this is executed finally !!
</s:if>

最新更新