Hi everybody,

I use digester in my application to access the constants in the whole
application. This is what I've done:

lvb_digester_rules.xml
________________________
<digester-rules>
  <object-create-rule pattern="lv-beans" 
                      classname="java.util.ArrayList"/>
  <pattern value="lv-beans/lv-bean">
    <object-create-rule
classname="org.apache.struts.util.LabelValueBean" />
    <set-properties-rule />
    <set-next-rule methodname="add" />
  </pattern>
</digester-rules>

struts-config.xml
__________________________
  <plug-in className="org.apache.struts.plugins.DigestingPlugIn">
    <set-property property="key" value="serverConstants"/>
    <set-property property="configPath"
value="/WEB-INF/server-constants.xml"/>
    <set-property property="digesterPath"
value="/WEB-INF/lvb-digester-rules.xml"/>
  </plug-in>

server-constants.xml
___________________________
<lv-beans>
  <lv-bean label="USER_KEY" value="UserBean id in session" />
  <lv-bean label="MAX_INACTIVE_SESSION_INTERVAL" value="600" />
</lv-beans>

This is the class used to read a value for a label in the
server-constants.xml
public class Constants {
        public static String getConstant(ServletConfig servletConfig,
String key) {
                ServletContext servletContext =
servletConfig.getServletContext();
                ArrayList lvArray = 
                        (ArrayList)
servletContext.getAttribute("serverConstants");
                // LabelValueBeans are equal if their values are both
null or equal.
                Iterator iterator = lvArray.iterator();
                LabelValueBean lvBean;
                while (iterator.hasNext()) {
                        lvBean = (LabelValueBean) iterator.next();
                        if (lvBean.getLabel().equals(key)) {
                                return lvBean.getValue();
                        }
                }
                return null;
        }
}

By doing this way, if I want to add more constants to my application, I
just need to put them in the server-constants.xml file (i.e. no change
in Java code).

Now, I put a String object in the session like this:

session.setAttribute(Constants.getConstant(servletConfig, "USER_KEY"),
myStringObj);

In Java code, I can get that String object with:

Object obj = session.getAttribute(Constants.getConstant(servletConfig,
"USER_KEY"));

How can I print out that object in jsp file with bean:write? I tried 

<bean:write name='Constants.getConstant(servletConfig, "USER_KEY")'/>,
but it doesn't work. Do you know how to work around this problem? Or do
you know any other implementation of using constants in Struts
applications?

Sincerely,

Thai Dang Vu

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

Reply via email to