My biggest reservation with placing constants in a map is that it do compile
time checking. I suppose it is very important for sites with thousands of
JSP files to do precompiling on them. Compiling would fail if the constant
is missing. With placing constants in a map, the problem can only be found
during runtime which is not ideal in my opinion.

I know many people balk at using expression notation (<%= %>), but if you
use JSP documents, you can at least write
<jsp:expression>...</jsp:expression> tags and keep your file fully XML
compliant (and it looks nicer too!).

Thanks,
Paul

-----Original Message-----
From: Matt Raible [mailto:[EMAIL PROTECTED] 
Sent: Monday, March 21, 2005 12:24 PM
To: Struts Users Mailing List
Subject: Re: Using constants in JSP pages


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]






------------------------------------------------------------------------------
Notice:  This e-mail message, together with any attachments, contains 
information of Merck & Co., Inc. (One Merck Drive, Whitehouse Station, New 
Jersey, USA 08889), and/or its affiliates (which may be known outside the 
United States as Merck Frosst, Merck Sharp & Dohme or MSD and in Japan, as 
Banyu) that may be confidential, proprietary copyrighted and/or legally 
privileged. It is intended solely for the use of the individual or entity named 
on this message.  If you are not the intended recipient, and have received this 
message in error, please notify us immediately by reply e-mail and then delete 
it from your system.
------------------------------------------------------------------------------

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

Reply via email to