I wrote a tag library to expose contants to a JSP page. Granted, it's not as portable as HashMap in the app context, but it seems to work.

http://raibledesigns.com/wiki/Wiki.jsp?page=ConstantsTag

Matt

On Mar 21, 2005, at 8:27 AM, Marsh-Bourdon, Christopher wrote:

Agreed, but with my fluff most ides (Eclipse, JBuilder etc) will parse and
throw an exception/error if the ... in <%= ... %> is undeclared or there is
a typo there. That at least gives David the answer (albeit a bit of hash)
David was after.


Cheers

Christopher Marsh-Bourdon
www.marsh-bourdon.com

-----Original Message-----
From: Haroon Rafique [mailto:[EMAIL PROTECTED]
Sent: 21 March 2005 15:20
To: Struts Users Mailing List
Subject: RE: Using constants in JSP pages


On Today at 2:24pm, MC=>Marsh-Bourdon, Christopher <Christopher.Marsh-Bourd...:

MC> This is my way of doing this, and it may be a tad crap. In the page
MC> tag at the top of the JSP I add one or more imports like so:
MC>
MC> <%@ page language="java" import="com.marsh-bourdon.Constants" %>
MC>
MC> I then just refer to the constants within the page like so:
MC>
MC> <%= Constants.KEY_FOR_SOMETHING %>
MC>
MC> This should then be checked by your ide for typos etc.
MC>
MC> Cheers
MC>
MC> Christopher Marsh-Bourdon
MC> www.marsh-bourdon.com
MC>


Hi David, Christopher,

I'm sure other people will pipe in shortly, but a variation of this has
been discussed in the mailing list before. From the archives:
http://www.mail-archive.com/user@struts.apache.org/msg06778.html

In a nutshell:

1) Provide a method in your Constants file which puts all your Constants
in a Map
2) At app startup make that map available to the application (e.g., in the
context
3) Use JSTL, to now access your constants directly without scriptlets.


David, from your original email, I'm sure you could figure out a naming
scheme to put constants from foo package and bar package under different
names in the context (like Constants_foo and Constants_bar, etc). That
should achieve 1).


To achieve 2), you could possibly use the following <c:out> construct.

<c:out value="${Constants_foo.FOO}">
    <span style="color: red">
    <fmt:message key="undefined.constant"/>
    </span>
</c:out>

Since you're talking about JSP pages, I'm not at all sure how you can get
the compiler to spot mistakes. But with the above JSTL, you could, at
least, see it in a visible manner on the JSP page that an undefined
constant was used.


Hope this was helpful.

Cheers,

MC> -----Original Message-----
MC> From: David Kennedy [mailto:[EMAIL PROTECTED]
MC> Sent: 21 March 2005 14:18
MC> To: Struts Users Mailing List
MC> Subject: Using constants in JSP pages
MC>
MC>
MC> Most of our pages have a header/navbar which performs some highlighting
MC> of the current page's category etc. This means all pages must define
MC> beans to say things like, "My category is FOO, my sub-category is BAR"
MC>
MC> I would like to get the compiler to spot typos:
MC> (1) To make sure FOO matches one of the defined categories in the
navbar.
MC> (2) To make sure the category variable itself is correct.
MC>
MC> I can achieve (1) by defining a simple constants class and using the
MC> 'unstandard' taglib:
MC> <un: var="foo" type="com.foo.Constants" field="FOO"/>
MC>
MC> How can I achieve (2)? A little paranoid I know, but I've already
MC> defined "fo" by mistake in a couple of places(*), and there doesn't seem


MC> to be any advantage to using a constant if it is in turn defined by
MC> another hand-typed variable!
MC>
MC> All I can think of is
MC> <un: var="<%=com.foo.Constants.FOO_NAME%>" type="..." field="...">
MC> but if I'm going to use <%= %> I might as well just write
MC> <%= com.foo.Constants.FOO %>
MC> rather than use bind at all!
MC>
MC> (*) Where obviously the real var names are longer and easier to typo
MC> than foo.
MC>


--
Haroon Rafique
<[EMAIL PROTECTED]>


--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


----------------------------------------------------------------------- ---------
The information contained herein is confidential and is intended solely for the
addressee. Access by any other party is unauthorised without the express
written permission of the sender. If you are not the intended recipient, please
contact the sender either via the company switchboard on +44 (0)20 7623 8000, or
via e-mail return. If you have received this e-mail in error or wish to read our
e-mail disclaimer statement and monitoring policy, please refer to
http://www.drkw.com/disc/email/ or contact the sender. 3166
----------------------------------------------------------------------- ---------



--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to