一尘不染

如何在JSP中将服务器端变量传递给核心标记?

jsp

此表达标签对我来说是正确的值<%= drug.NonAuthoritative%>

虽然我无法恢复毒品的价值。不可在C标签中使用

<c:if test="${drug.NonAuthoritative}">&nbsp;<bean:message key="WriteScript.msgNonAuthoritative"></bean:message></c:if>

方法是

public Boolean NonAuthoritative() {
    return nonAuthoritative;
}

阅读 298

收藏
2020-06-10

共1个答案

一尘不染

有两个问题:

  1. 脚本 和EL不共享相同的作用域。该drug${drug}有匹配的页面,请求,会话或应用程序范围的现有属性的名称。如果要drugscriptlet中 而不是在控制器中进行准备,那么您应该自己将其作为属性放在这些作用域之一中。
    <% 
    Drug drug = new Drug();
    // ...
    request.setAttribute("drug", drug);
    

    %>


  1. (由Nathan部分回答),EL依赖Javabeans规范。对于非布尔属性或布尔属性,${drug.propertyName}需要一个公共方法。所以,这应该做getPropertyName()``isPropertyName()
    public class Drug {
    
    private boolean nonAuthorative;
    
    public boolean isNonAuthorative() {
        return nonAuthorative;
    }
    
    // ...
    

    }

    <c:if test="${drug.nonAuthoritative}">

(注意外壳!)

2020-06-10