这个表达式标签为我输出了一个正确的值 <%=drug.NonAuthoritative%>
虽然我无法恢复用于 C 标签的 drug.NonAuthoritative 的值
<c:if test="${drug.NonAuthoritative}"> <bean:message key="WriteScript.msgNonAuthoritative"></bean:message></c:if>
方法是
public Boolean NonAuthoritative() {
return nonAuthoritative;
}
最佳答案
有两个问题:
Scriptlet 和 EL 不共享相同的范围。
${drug}
中的drug
必须与页面、请求、 session 或应用程序范围中的现有属性名称相匹配。如果您在 scriptlet 而不是在 Controller 中准备drug
,那么您应该自己将其作为属性放入其中一个范围中。<% Drug drug = new Drug(); // ... request.setAttribute("drug", drug); %>
(部分由 Nathan 回答),EL依赖Javabeans specification .
${drug.propertyName}
需要用于非 boolean 属性的公共(public)方法getPropertyName()
或用于 boolean 属性的isPropertyName()
。所以,这应该做public class Drug { private boolean nonAuthorative; public boolean isNonAuthorative() { return nonAuthorative; } // ... }
与
<c:if test="${drug.nonAuthoritative}">
(注意大小写!)
关于java - 如何将服务器端变量传递给 JSP 中的核心标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5859023/