I'm asking for some opinions on referencing Java code (in my case an enum value) in a JSP.
I currently have conditional logic in my JSP like:
<c:if test="${actionBean.order.status eq 'complete'}">
show some stuff
</c:if>
Now, 'complete' is a value associated with an enum in my codebase. Would it be better to reference the enum inside my JSP? If so, how?
I think it might be a good thing because: If the enum changes, then the JSP doesn't break.
Is it bad practice to mix Java code into the JSPs? Or is it worse to duplicate the value of 'complete'?
Thanks in advance.
Is it bad practice to mix Java code into the JSPs? Or is it worse to duplicate the value of 'complete'?
My opinion is that you should avoid mixing Java code with JSPs, even if it means some limited duplication of symbols / values.
Think of it this way: there are many, many changes that could be made on the Java side that could "break" a JSP. In this case, for instance, the name of "actionBean", the getOrder()
or getStatus()
methods could change. Or getOrder()
could return a null
or something of a different type. If you worried about all of the things that could change on the Java side, you'd end up not using taglibs at all.
The enum value which you're comparing with in JSP is actually the same as String.valueOf(enum)
and this is by default exactly the enum name. So if you change the enum's name, then you should really also change the JSP code. So I don't see any benefit to compare against the actual enum object. It would be coerced to String
with String.valueOf(enum)
as well and you would effectively end up comparing two String
s with each other. Just keep it as it is.
With regard to referencing Java code in a JSP file:
HttpServlet#doGet()
.HttpServlet#doPost()
.All the Java code which is (in)directly referenced in the HttpServlet
can be breakdown further:
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