Java 如何将服务器端变量传递到JSP中的核心标记中?
这个表达式标记为我输出了一个正确的值 虽然我无法恢复drug.NoAuthoritive在C标签中的使用价值Java 如何将服务器端变量传递到JSP中的核心标记中?,java,jsp,jsp-tags,Java,Jsp,Jsp Tags,这个表达式标记为我输出了一个正确的值 虽然我无法恢复drug.NoAuthoritive在C标签中的使用价值 <c:if test="${drug.NonAuthoritative}"> <bean:message key="WriteScript.msgNonAuthoritative"></bean:message></c:if> 这是因为JSTL假设您使用的是JavaBean标准,所以当您在JSTL表达式中调用某个dru
<c:if test="${drug.NonAuthoritative}"> <bean:message key="WriteScript.msgNonAuthoritative"></bean:message></c:if>
这是因为JSTL假设您使用的是JavaBean标准,所以当您在JSTL表达式中调用某个
drug.nonauthoritive
时,它正在寻找一个名为getnonauthoritive()
(或者isnonauthoritive()
)的方法。scriptlet没有做出这样的假设,它只是评估您给它的内容。有两个问题:
${drug}
中的drug
必须与页面、请求、会话或应用程序范围中现有属性的名称匹配。如果您在scriptlet中而不是在控制器中准备药物
,那么您应该自己将其作为一个属性放在其中一个作用域中
<%
Drug drug = new Drug();
// ...
request.setAttribute("drug", drug);
%>
与
(注意外壳!)
使用药物
实例的字段非授权
EL表达式${drug.nonauthoritive}
使用drug
实例的方法isnonauthoritive()
要实现此功能,请保持EL表达式不变,但将此方法添加到药物类中:
public boolean isNonAuthoritative() {
return NonAuthoritative;
}
我已经定义了方法,这就是expression标签要计算的内容,对吗?@bneil:如果您可以为您定义的方法添加签名,这将有助于澄清问题。我在/oscarRx/StaticScript2.jsp263:tag='if'/attribute='test中从TagLibraryValidator for c获得此错误验证错误消息:解析带有值的自定义操作属性“test”时出错${drug.nonauthoritive()}”:遇到“(”,应为[“}”、“,“>”、“gt”中的一个,我已将该方法添加到question@bneil:我认为它不喜欢添加parens。JSTL有自己的语法,它与Java非常不同。
public class Drug {
private boolean nonAuthorative;
public boolean isNonAuthorative() {
return nonAuthorative;
}
// ...
}
<c:if test="${drug.nonAuthoritative}">
public boolean isNonAuthoritative() {
return NonAuthoritative;
}