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

标签 java jsp jsp-tags

这个表达式标签为我输出了一个正确的值 <%=drug.NonAuthoritative%>

虽然我无法恢复用于 C 标签的 drug.NonAuthoritative 的值

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

方法是

public Boolean NonAuthoritative() {
    return nonAuthoritative;
}

最佳答案

有两个问题:

  1. Scriptlet 和 EL 不共享相同的范围。 ${drug} 中的 drug 必须与页面、请求、 session 或应用程序范围中的现有属性名称相匹配。如果您在 scriptlet 而不是在 Controller 中准备 drug,那么您应该自己将其作为属性放入其中一个范围中。

    <% 
        Drug drug = new Drug();
        // ...
        request.setAttribute("drug", drug);
    %>
    

  2. (部分由 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/

相关文章:

java - 在现有图像上绘制矩形,然后显示该图像

java - 无效的 VariableDeclaratorId jsp

java - 如何将名称为 <%some code %> 的单选按钮传递给 java 操作类?

Tomcat上的JSP和Servlet维护

html - 将字符串中的第一个字母设为大写并将字体设为斜体

java - 对 apache 磁贴属性进行逻辑处理

java - 删除 arraylist 中的元素时出现问题

java - 检查是否运行倒计时?

java - 在新的Android studio中运行时出错

java - 如果响应中有多个值,如何从不同文本字段中的ajax响应中获取值?