你的代码没有大问题,我调整了一下结构,你用用看!
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>Condition Flow</title>
  </head>
  <body>
    <h3>
      Condition Flow
    </h3>
    <s:set name="name" value="<%="'" + request.getParameter("name") + "'"%>" />
    <s:if test="#name == 'Max'"> 
        Max's file here 
</s:if>
    <s:elseif test="#name == 'Scott'"> 
        Scott's file here 
      </s:elseif>
    <s:else> 
        Other's file here 
</s:else>
  </body>
</html>

解决方案 »

  1.   

    struts2的标签里面不能包含表达式,也就是不能包含
    <%%>这样的代码。你的action里面如果有getName()方法,
    可以直接用<s:if test="name=='max'">
      

  2.   

    我把代码改了一下:
    <%@ page contentType="text/html; charset=UTF-8" %>
    <%@ taglib prefix="s" uri="/struts-tags" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <title>Condition Flow</title>
        </head>
        <body>
            <h3>Condition Flow</h3>            
            <!--
                这里有点小技巧:
                本来可以用#parameters.name[0]来获得,请求中name的值。但是,在我实现include例子时,
                无论我用param标志给name赋任何值,#parameters里面不会含有任何值,所以#parameters.name也为空值。
                
                其原因为:
                当使用include标志时,被包含的页面(included)里#parameters拿到的是包含页面里的请求参数。
                
                因此,这里必须手工调用request.getParameter("name")。
            -->
            <s:set name="name" value="Max" />
            <s:if test="#name == 'Max'">
                Max's file here
            </s:if>
            <s:elseif test="#name == 'Scott'">
                Scott's file here
            </s:elseif>
            <s:else>
                Other's file here
            </s:else>        
        </body>
    </html>这样没出错了,但输出结果是:Other's file here
    搞不懂,按道理应该是输出Max's file here吧
      

  3.   

    这个地方好像是楼主用了include的原因,是在执行前被编译过了,所以就没有取到Max的值
      

  4.   

    <s:set   name="name"   value=" <%=   "'"   +   request.getParameter("name")   +   "'"   %> "   /> 
    ==〉
    <s:property value="#parameters.name" />
      

  5.   

    <s:set value="parameters.name" />
    会报错ava.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String
    at org.apache.struts2.components.Property.start(Property.java:136)
    at org.apache.struts2.views.jsp.ComponentTagSupport.doStartTag(ComponentTagSupport.java:54)
    at org.apache.jsp.unUi_jsp._jspx_meth_s_005fproperty_005f0(unUi_jsp.java:155)
    at org.apache.jsp.unUi_jsp._jspService(unUi_jsp.java:95)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:390)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.struts2.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:413)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:228)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:212)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:818)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:624)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:445)
    at java.lang.Thread.run(Unknown Source)