How do I reference an enum variable in an <s:if> test attribute?
This is the situation, and the results I get:

1) I have a enum defined as

    public enum ActionState
    {
        NONE, INIT, LIST, ADD, EDIT, DELETE ...
    }

2) I have a variable of this type in my action class:

    ActionState state;

3) My jsp contains the following code (this is just an example):

    state = <s:property value="state"/>
    <p>
    <s:if test="%{state == 'LIST'}">true</s:if>
    <s:else>false</s:else>
    </p>

4) Here are the results in the browser:

Struts ValueStack Debug

Value Stack Contents ObjectProperty NameProperty Value
com.rp.db.actions.Test update Update mapInstructions  servletContext
org.apache.catalina.core.applicationcontextfac...@b79701 recordName
servletResponse org.apache.catalina.connector.responsefac...@22e177 save
Save locale en_US next Next state LIST cancel Cancel addContinent Add
Continent add Add upload null actionErrors [] errors {} uploadMap Upload Map
page 0 tableName  delete Delete command  uploadContentType null serv null
addRegion Add Region sessinfo null uploadImage Upload Image texts null
pageCount 0 errorMessages [] done Done edit Edit actionMessages [] pageSize
20 back Back httpSession
org.apache.catalina.session.standardsessionfac...@15d45d9 init Init
servletRequest org.apache.struts2.dispatcher.strutsrequestwrap...@a0a36 log
org.apache.log4j.log...@e2b07b uploadFileName null fieldErrors {} pageTitle
lastState NONE confirm Confirm Delete
com.opensymphony.xwork2.DefaultTextProvider texts null

Stack Context *These items are available using the #key notation*  KeyValue
com.opensymphony.xwork2.dispatcher.HttpServletRequest
org.apache.struts2.dispatcher.strutsrequestwrap...@a0a36
com.opensymphony.xwork2.ActionContext.localeen_US
com.opensymphony.xwork2.dispatcher.HttpServletResponse
org.apache.catalina.connector.responsefac...@22e177
com.opensymphony.xwork2.ActionContext.nameTest_init
com.opensymphony.xwork2.ActionContext.application
{org.apache.catalina.resources=org.apache.naming.resources.proxydircont...@10b23cf,
org.apache.catalina.WELCOME_FILES=[Ljava.lang.String;@84f566,
freemarker.configuration=freemarker.template.configurat...@12ea1dd,
javax.servlet.context.tempdir=F:\development\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\marmoset,
org.apache.catalina.jsp_classpath=/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/classes/;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/commons-fileupload-1.2.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/commons-io-1.3.2.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/commons-logging-1.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/freemarker-2.3.13.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/javax.persistence_1.99.0.v200906021518.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/jenkov-butterfly-persistence-5.0.0.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/jstl-impl-1.2.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/junit-3.8.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/log4j-1.2.15.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/mysql-connector-java-5.1.7-bin.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/ognl-2.6.11.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/spring-test-2.5.6.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/standard.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/struts2-config-browser-plugin-2.1.6.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/struts2-core-2.1.6.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/tabletags-1.0.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/xwork-2.1.2.jar;/F:/development/Tomcat
5.5/common/classes/;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-en.jar;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-es.jar;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-fr.jar;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-ja.jar;/F:/development/Tomcat
5.5/common/lib/commons-el.jar;/F:/development/Tomcat
5.5/common/lib/jasper-compiler-jdt.jar;/F:/development/Tomcat
5.5/common/lib/jasper-compiler.jar;/F:/development/Tomcat
5.5/common/lib/jasper-runtime.jar;/F:/development/Tomcat
5.5/common/lib/jsp-api.jar;/F:/development/Tomcat
5.5/common/lib/mysql-connector-java-5.1.7-bin.jar;/F:/development/Tomcat
5.5/common/lib/naming-factory-dbcp.jar;/F:/development/Tomcat
5.5/common/lib/naming-factory.jar;/F:/development/Tomcat
5.5/common/lib/naming-resources.jar;/F:/development/Tomcat
5.5/common/lib/servlet-api.jar;/F:/development/Tomcat%205.5/bin/bootstrap.jar;/F:/development/sun/sdk/jdk/lib/tools.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/dnsns.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/localedata.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/sunjce_provider.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/sunmscapi.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/sunpkcs11.jar}
com.opensymphony.xwork2.ActionContext.conversionErrors{}  __component_stack
[org.apache.struts2.components.de...@fd4662]  last.property.accessednull
com.opensymphony.xwork2.dispatcher.ServletContext
org.apache.catalina.core.applicationcontextfac...@b79701
com.opensymphony.xwork2.dispatcher.PageContext
org.apache.jasper.runtime.pagecontexti...@6937f9
__requestWrapper.getAttributefalse  request
{struts.valuestack=com.opensymphony.xwork2.ognl.ognlvaluest...@cad437,
struts.view_uri=test.jsp, struts.request_uri=/marmoset/maint/Test_init,
struts.actionmapping=org.apache.struts2.dispatcher.mapper.actionmapp...@178c490,
javax.servlet.forward.servlet_path=/maint/Test_init,
javax.servlet.forward.request_uri=/marmoset/maint/Test_init,
__cleanup_recursion_counter=1, javax.servlet.forward.context_path=/marmoset,
.freemarker.request=freemarker.ext.servlet.httprequesthashmo...@14f1726,
.freemarker.requestparameters=freemarker.ext.servlet.httprequestparametershashmo...@1b0de2e
}  last.bean.accessednull  actioncom.rp.db.actions.t...@329572  parameters{}
__link[Ljava.lang.Object;@1c0b8a0  application
{org.apache.catalina.resources=org.apache.naming.resources.proxydircont...@10b23cf,
org.apache.catalina.WELCOME_FILES=[Ljava.lang.String;@84f566,
freemarker.configuration=freemarker.template.configurat...@12ea1dd,
javax.servlet.context.tempdir=F:\development\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\marmoset,
org.apache.catalina.jsp_classpath=/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/classes/;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/commons-fileupload-1.2.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/commons-io-1.3.2.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/commons-logging-1.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/freemarker-2.3.13.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/javax.persistence_1.99.0.v200906021518.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/jenkov-butterfly-persistence-5.0.0.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/jstl-impl-1.2.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/junit-3.8.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/log4j-1.2.15.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/mysql-connector-java-5.1.7-bin.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/ognl-2.6.11.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/spring-test-2.5.6.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/standard.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/struts2-config-browser-plugin-2.1.6.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/struts2-core-2.1.6.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/tabletags-1.0.1.jar;/F:/development/workspace/.metadata/.plugins/org.eclipse.wst.server.core/tmp0/wtpwebapps/marmoset/WEB-INF/lib/xwork-2.1.2.jar;/F:/development/Tomcat
5.5/common/classes/;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-en.jar;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-es.jar;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-fr.jar;/F:/development/Tomcat
5.5/common/i18n/tomcat-i18n-ja.jar;/F:/development/Tomcat
5.5/common/lib/commons-el.jar;/F:/development/Tomcat
5.5/common/lib/jasper-compiler-jdt.jar;/F:/development/Tomcat
5.5/common/lib/jasper-compiler.jar;/F:/development/Tomcat
5.5/common/lib/jasper-runtime.jar;/F:/development/Tomcat
5.5/common/lib/jsp-api.jar;/F:/development/Tomcat
5.5/common/lib/mysql-connector-java-5.1.7-bin.jar;/F:/development/Tomcat
5.5/common/lib/naming-factory-dbcp.jar;/F:/development/Tomcat
5.5/common/lib/naming-factory.jar;/F:/development/Tomcat
5.5/common/lib/naming-resources.jar;/F:/development/Tomcat
5.5/common/lib/servlet-api.jar;/F:/development/Tomcat%205.5/bin/bootstrap.jar;/F:/development/sun/sdk/jdk/lib/tools.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/dnsns.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/localedata.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/sunjce_provider.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/sunmscapi.jar;/F:/development/sun/sdk/jdk/jre/lib/ext/sunpkcs11.jar}
xwork.NullHandler.createNullObjectsfalse  current.property.pathnull  attr
org.apache.struts2.util.attribute...@320399
com.opensymphony.xwork2.ActionContext.container
com.opensymphony.xwork2.inject.containeri...@fa54fe
com.opensymphony.xwork2.ActionContext.session{monkbiz=+a5GzlUWW6ih69v2ExOWOYoLhfM=,
monkbizPage=0, monkbizPageCount=9}
com.opensymphony.xwork2.ActionContext.actionInvocation
com.opensymphony.xwork2.defaultactioninvocat...@fb6763
com.opensymphony.xwork2.util.ValueStack.ValueStack
com.opensymphony.xwork2.ognl.ognlvaluest...@cad437
session{monkbiz=+a5GzlUWW6ih69v2ExOWOYoLhfM=,
monkbizPage=0, monkbizPageCount=9}  report.conversion.errorsfalse
xwork.MethodAccessor.denyMethodExecutionfalse  struts.actionMapping
org.apache.struts2.dispatcher.mapper.actionmapp...@178c490
com.opensymphony.xwork2.ActionContext.parameters{}
   state = LIST

     false
5)  Incidentally, test="%{state.name == 'LIST'} doesn't work either, but
when I use <s:debug>, the value of "state" in the Value Stack is shown as
"LIST".

Thanks,
Bill

Reply via email to