0 0

struts2.1.16上运行ajax报Error: 'dojo' is undefined 5

承接问题:
http://www.iteye.com/problems/15272
http://www.iteye.com/problems/15246

我觉得是不是ajax配置的问题。

关于ajax的配置请参考http://www.iteye.com/problems/15246

问题补充:
我已经把struts2-dojo-plugin-2.1.6.jar放到WEB-INF/lib目录下,同时在jsp上也加了<sx:head />:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<sx:head />
</head>


还要怎样呀?

问题补充:
to lovewhzlq:

我觉得这个可能是ajax配置的问题。昨天我是按照以下步骤配置ajax的:

1. 在web.xml加入:
Java代码
<servlet>  
    <servlet-name>dwr</servlet-name>  
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>  
    <init-param>  
      <param-name>debug</param-name>  
      <param-value>true</param-value>  
    </init-param>  
</servlet>  
<servlet-mapping>  
    <servlet-name>dwr</servlet-name>  
    <url-pattern>/dwr/*</url-pattern>  
</servlet-mapping> 

<servlet>
    <servlet-name>dwr</servlet-name>
    <servlet-class>uk.ltd.getahead.dwr.DWRServlet</servlet-class>
    <init-param>
      <param-name>debug</param-name>
      <param-value>true</param-value>
    </init-param>
</servlet>
<servlet-mapping>
    <servlet-name>dwr</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

2. 在WEB-INF下生成dwr.xml文件,内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 1.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr10.dtd" >
Java代码
<dwr>  
    <!-- 定义所有需要被暴露的Java方法 -->  
    <allow>  
        <!-- 定义将org.apache.struts2.validators.DWRValidator创建成一个validator对象 -->  
        <create javascript="validator" creator="new">  
            <param name="class" 
                value="org.apache.struts2.validators.DWRValidator" />  
        </create>  
        <!-- 定义一个转换器 -->  
        <convert match="com.opensymphony.xwork2.ValidationAwareSupport" 
            converter="bean" />  
    </allow>  
    <signatures>  
        <![CDATA[  
    import java.util.Map;  
    import org.apache.struts2.validators.DWRValidator;  
    DWRValidator.doPost(String,String,Map<String,String>);  
    ]]>  
    </signatures>  
</dwr> 

<dwr>
<!-- 定义所有需要被暴露的Java方法 -->
<allow>
<!-- 定义将org.apache.struts2.validators.DWRValidator创建成一个validator对象 -->
<create javascript="validator" creator="new">
<param name="class"
value="org.apache.struts2.validators.DWRValidator" />
</create>
<!-- 定义一个转换器 -->
<convert match="com.opensymphony.xwork2.ValidationAwareSupport"
converter="bean" />
</allow>
<signatures>
<![CDATA[
    import java.util.Map;
    import org.apache.struts2.validators.DWRValidator;
    DWRValidator.doPost(String,String,Map<String,String>);
    ]]>
</signatures>
</dwr>

3. 下载dwr.jar

4. 在相关jsp的<head></head>之间加入<s:head theme="ajax" />

但是,出现以下问题:
1. jsp上不能出现ajax相关的属性

<s:submit target="theForm"></s:submit>
jsp报警提示:undefined attribute name(target)

2. 运行时报以下错误:
SEVERE: Servlet.service() for servlet jsp threw exception
java.io.FileNotFoundException: Template /template/ajax/head.ftl not found.

然后,修改了struts2-core-2.1.6.jar强行加入ajax template。解决了问题2(即/template/ajax/head.ftl not found)

具体请参考:http://www.iteye.com/problems/15246
问题补充:
改为这个
<sx:head theme="ajax" />

jsp报出警告信息:undefined attribute name(theme)
2009年4月21日 14:16

5个答案 按时间排序 按投票排序

0 0

采纳的答案

然后,修改了struts2-core-2.1.6.jar强行加入ajax template。解决了问题2(即/template/ajax/head.ftl not found)

这个应该可以不用强行加入ajax template了,
现在已经是用插件方式struts2-dojo-plugin-2.1.6.jar

dwr你就用struts-2.1.6\lib下的dwr-1.1.1.jar

改为这个
<sx:head theme="ajax" />

2009年4月21日 15:45
0 0

<sx:head />
就这样,不用加那个属性了,默认就是ajax的主题

2009年4月21日 16:02
0 0

我觉得是不是你还有包没有引入

struts-2.1.6\lib下不是已经有所有需要的jar包了

你把你原来自己引入的jar包去掉,把struts-2.1.6\lib这里面的都引入,去试看看

2009年4月21日 15:01
0 0

没有导入dojo。。。

2009年4月21日 14:39
0 0

看看引入的dojo路径,明显是找不到嘛

2009年4月21日 14:37

相关推荐

Global site tag (gtag.js) - Google Analytics