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