struts 2.0的例子运行的问题,大家帮我看看

ratzip 2008-12-05 01:22:36
我按照美河的STRUTS2的视频教程写了下面一个页面,保存为con.jsp
我在myeclipse里启动了tomcat,之后在浏览器里输入地址,因为这个页面就是为了演示if标签的,所以没有配置web.xml和struts.xml文件,也没有任何java类,我看到那个视频里的老师就是这么写的,他这个页面就是为了演示if标签的,但是我运行的时候就报错,下面是这个jsp文件:

<%@ 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="<%= "'" + 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>

下面是错误:::
type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /index.jsp(20,8) According to TLD or attribute directive in tag file, attribute value does not accept any expressions
org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1172)
org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:819)
org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1507)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2386)
org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2392)
org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2336)
org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:178)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:306)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:286)
org.apache.jasper.compiler.Compiler.compile(Compiler.java:273)
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


note The full stack trace of the root cause is available in the Apache Tomcat/6.0.13 logs.

大家帮我看看是怎么回事,先谢谢大家了
...全文
110 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zou_wei_forever 2008-12-05
  • 打赏
  • 举报
回复
web.xml中配上:

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

就可以了!
sqi007 2008-12-05
  • 打赏
  • 举报
回复
你很搞,没有配置struts.xml及web.xml能用if标签吗,你用到了ognl得靠struts2核心库支持。
wj_18 2008-12-05
  • 打赏
  • 举报
回复
你就是不用ACTION,你也要在WEB.XML用配置DISPATCHER了
因为标签也是STRUTS2的,要用他就要把STRUTS2配置上
yulu0214 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bruni 的回复:]
不支持在tag中使用脚本啦
<s:set name="n不支持在tag中使用脚本啦
<s:set name="name" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试ame" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试
[/Quote]
正解
sun_abc 2008-12-05
  • 打赏
  • 举报
回复
<s:if test="'Max' in name">
Max's file here
</s:if>
<s:elseif test="'Scott' in name">
Scott's file here
</s:elseif>
<s:else>
Other's file here
</s:else>
忙碌的布谷鸟 2008-12-05
  • 打赏
  • 举报
回复
web.xml
我觉的还是配置上比较好。
由于S标签是通过web.xml来访问的,虽然,里面没有明确配置。

Lz配上再试试


<!-- 定义Struts2的FilterDispathcer的Filter -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<!-- FilterDispatcher用来初始化struts2并且处理所有的WEB请求。 -->
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
ratzip 2008-12-05
  • 打赏
  • 举报
回复
我配置了web.xml文件,问题依旧
myjava_024 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bruni 的回复:]
不支持在tag中使用脚本啦
<s:set name="n不支持在tag中使用脚本啦
<s:set name="name" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试ame" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试
[/Quote]

支持
bruni 2008-12-05
  • 打赏
  • 举报
回复
不支持在tag中使用脚本啦
<s:set name="n不支持在tag中使用脚本啦
<s:set name="name" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试ame" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试
kbyst 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 bruni 的回复:]
不支持在tag中使用脚本啦
<s:set name="n不支持在tag中使用脚本啦
<s:set name="name" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试ame" value=" <%= "'" + request.getParameter("name") + "'" %>" />
<s:set name="name" value="${request.name}"/>试试
[/Quote]
支持

67,538

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧