As Ted wrote those methods should return Strings which will determine the result to be shown.
String myCustomMethod() { if(1) return "result1"; else return "result2"; } <action name="sample" method="myCustomMethod"> <result name="result1">/pages/course1.jsp</result> <result name="result2">/pages/course2.jsp</result> </action> Also I do not recommend to define action name like
<action name="course!*"
since '!' is already a special character which specifies the method name automatically see struts.properties configuration file for more details about how to enable/disable dynamic method invocation
struts.enable.DynamicMethodInvocation=false/true
but you can use wildcards in some other way like "course/*". Note: using in result definition
<result type="redirect-action">course!list</result>
"course!list" will call action course and the method "list" will be invoked. Best, Aram