This expression tag outpus a correct value for me <%=drug.NonAuthoritative%>
while I cant recover the value of drug.NonAuthoritative for use in a C tag
<c:if test="${drug.NonAuthoritative}"> <bean:message key="WriteScript.msgNonAuthoritative"></bean:message></c:if>
the method is
public Boolean NonAuthoritative() {
return nonAuthoritative;
}
There are 2 problems:
Scriptlets and EL do not share the same scope. The drug
in ${drug}
has to match the name of an existing attribute in the page, request, session or application scope. If you're preparing drug
in a scriptlet instead of in a controller, then you should put it as an attribute in one of those scopes yourself.
<%
Drug drug = new Drug();
// ...
request.setAttribute("drug", drug);
%>
(as partly answered by Nathan), EL relies on Javabeans specification. The ${drug.propertyName}
requires a public method getPropertyName()
for non-boolean properties or isPropertyName()
for boolean properties. So, this should do
public class Drug {
private boolean nonAuthorative;
public boolean isNonAuthorative() {
return nonAuthorative;
}
// ...
}
with
<c:if test="${drug.nonAuthoritative}">
(pay attention to the casing!)
The scriptlet <%=drug.NonAuthoritative%>
uses the field NonAuthoritative
of the drug
instance.
The EL expression ${drug.NonAuthoritative}
uses the method isNonAuthoritative()
of the drug
instance.
To make this work, keep the EL expression as-is, but add this method to your drug
class:
public boolean isNonAuthoritative() {
return NonAuthoritative;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With