dwr和三大框架整合后调用不到方法

qq1061129458 2014-04-29 10:09:07
jsp代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML>
<html>
<head>
<base href="<%=basePath%>">

<title>dsgame</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<link rel="stylesheet" type="text/css" href="css/css.css">
<script src="js/jquery-1.7.2.js"></script>
<script type='text/javascript' src='<%=basePath %>dwr/util.js'></script>
<script type='text/javascript' src='<%=basePath %>dwr/engine.js'></script>
<script type='text/javascript' src='<%=basePath %>dwr/interface/FileuploadUtil.js'></script>
<script type='text/javascript' src='<%=basePath %>dwr/interface/SaveIndexXml.js'></script>
<script type='text/javascript' src='<%=basePath %>dwr/interface/AutoProduct.js'></script>

</head>

<%
String type = request.getParameter("type");
%>

<body>
<div>
<div class="top_tool">
<button class="btn" onclick="createGALLERY()">新建画廊</button>
<button class="btn" onclick="createSHELF()">新建货架</button>
<button class="btn" onclick="createAD()">新建广告</button>
<button class="btn" onclick="createICON()">新建应用</button>
<button class="btn" onclick="save()" style="float:right">保存</button>
<button class="btn" onclick="showBgColor()" style="float:right">背景颜色</button>
</div>
<div>上传图片:<input type="file" class="file" onchange="fileFilter(this)"/>
<button class="btn" onclick="uploadFile(this)">上传</button></div>
<div class="kit">
<div id="editDiv" title="编辑"></div>
<div id="closeDiv" title="删除"></div>
</div>
<div class="main">
</div>
</div>

<div id="autoDiv">
</div>

<div id="editBgColorDiv">
<div id="title">编辑</div>
<div id="bgColor">颜色:<input id="bgColorValue" class="input_text"/></div>
<div style='text-align:right;'><button class="btn" onclick="saveBgColorEdit()">保存</button><button onclick="hideEditDiv()" class="btn">取消</button> </div>
</div>

<div id="editItemDiv">
<div id="title">编辑</div>
<div id="explain">标题说明:<input id="explainValue" class="input_text"/></div>
<div id="productId">产品ID:   <input id="productIdValue" class="input_text" onkeyup="autoSuggest(this)"/></div>
<div id="shelfId">货架ID:   <input id="shelfIdValue" class="input_text"/><input type="hidden" id="shelfName"/></div>
<div>上传图片:<input type="file" class="file" onchange="fileFilter(this)"/>
<button class="btn" onclick="uploadFile(this)">上传</button></div>
<!-- 就是这个 <button class="btn" onclick="uploadFile(this)">上传</button> -->
<div>预览图片:<img align="top" id="resultImg" onclick="lookRealPic(this)"/></div>
<div style='text-align:right;'><button class="btn" onclick="saveEdit()">保存</button><button onclick="hideEditDiv()" class="btn">取消</button> </div>
</div>


<div id="galleryItemDiv">
<div id="title">编辑</div>
<div id="displayPic"></div>
<div>产品ID:   <input id="galleryproductIdValue" class="input_text" onkeyup="autoSuggest(this)"/></div>
<div>上传图片:<input type="file" class="file" onchange="fileFilter(this)"/><button class="btn" onclick="galleryuploadFile(this)">上传</button></div>
<div style='text-align:right;'><button class="btn" onclick="addGalleryItem()">新增</button><button class="btn" onclick="deleteGalleryItem()">删除</button><button class="btn" onclick="saveEdit()">保存</button><button onclick="hideEditDiv()" class="btn">取消</button> </div>
</div>

</body>
</html>
<script>
var ls;
var v;
function autoSuggest(obj){
if(ls == obj&&this.v==obj.value){
return;
}
ls = obj;
v = obj.value;
if(obj&&obj.value&&obj.value!=""){
$("#autoDiv").find("div").remove();
AutoProduct.getProduct(obj.value,function(arr){
if(arr&&arr.length){
for(var i=0;i<arr.length;i++){
var o = arr[i];
$("#autoDiv").append("<div id='"+o.product_id+"'>"+o.product_name+"("+o.product_id+")"+"</div>");
}
$("#autoDiv").css({
"left":$(obj).offset().left+"px",
"top":$(obj).offset().top+$(obj).height()+"px",
"display":"block"
});

$("#autoDiv").find("div").bind({
mouseover:function(){
$(this).css("background-color","#eeeeee");
},
mouseout:function(){
$(this).css("background-color","#ffffff");
},
click:function(){
obj.value = $(this).attr("id");
v = obj.value;
$("#autoDiv").find("div").remove();
$("#autoDiv").css("display","none");
}
});

}
});
}
}

var tempImg = new Array();
var suffix;
var uploadfile;
function fileFilter(obj){
if(!/^.+\.(jpg|jpeg|png)$/i.test(obj.value)){
alert("请选择正确的文件格式(jpg、jpeg、png)");
obj.outerHTML = '<input type="file" class="file" onchange="fileFilter(this)"/>';
}
//后缀
var v = obj.value.split("\\");
suffix = v[v.length-1].split(".")[v[v.length-1].split(".").length-1];
}

function uploadFile(obj){
alert("sssssssss");
//文件对象
var uploadfile = $(obj).prev()[0];
if(!/^.+\.(jpg|jpeg|png)$/i.test(uploadfile.value)){
return;
}

alert("22222222");

FileuploadUtil.uploadFile(uploadfile,suffix,function(data){
alert(data.name);
tempImg.push(data.name+"."+data.suffix);
$("#resultImg").attr("src",data.previewUrl).attr("title","点我看真图");
});
alert("end......");
}
</script>
就是点上传会执行这个function,但是调用不到FileuploadUtil.uploadFile。

dwr.xml配置如下


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 3.0//EN"
"http://www.getahead.ltd.uk/dwr/dwr30.dtd">

<dwr>
<allow>
<create creator="new" javascript="FileuploadUtil">
<param name="class" value="cc.dsgame.dwr.FileuploadUtil" />

</create>
<create creator="new" javascript="SaveIndexXml">
<param name="class" value="cc.dsgame.dwr.SaveIndexXml" />
</create>
<create creator="new" javascript="AutoProduct">
<param name="class" value="cc.dsgame.dwr.AutoProduct" />
</create>

<convert converter="bean" match="cc.dsgame.model.Attachment" />
<convert converter="bean" match="cc.dsgame.model.tt_product" />
</allow>
</dwr>


web配置如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>

<filter>
<filter-name>ActionFilter</filter-name>
<filter-class>com.droxy.filter.ActionFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>ActionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

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

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

<filter>
<filter-name>encode</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encode</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<jsp-config>
<taglib>
<taglib-uri>/auth</taglib-uri>
<taglib-location>/WEB-INF/auth.tld</taglib-location>
</taglib>
</jsp-config>

<session-config>
<session-timeout>30</session-timeout>
</session-config>

<error-page>
<error-code>404</error-code>
<location>/404.jsp</location>
</error-page>


<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>

<!-- 图片的配置 -->
<servlet>
<servlet-name>getVerticalXml</servlet-name>
<servlet-class>cc.dsgame.servlet.GetVerticalXml</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>getVerticalXml</servlet-name>
<url-pattern>/getVerticalXml</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>base</servlet-name>
<servlet-class>cc.dsgame.servlet.DsServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>base</servlet-name>
<url-pattern>/base</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>productInfoList</servlet-name>
<servlet-class>cc.dsgame.servlet.ProductInfoServlet</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>productInfoList</servlet-name>
<url-pattern>/productInfoList</url-pattern>
</servlet-mapping>

<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>

</web-app>

...全文
169 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq1061129458 2014-04-29
  • 打赏
  • 举报
回复
application.xml配置如下


<!-- transaction manager -->
<bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 注解管理事务 -->
<!-- <tx:annotation-driven transaction-manager="txManager"/>-->

<!-- 手动声明式管理事务 -->
<tx:advice id="advice" transaction-manager="txManager">
<tx:attributes>
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="list*" propagation="REQUIRED" read-only="true" />
<tx:method name="query*" propagation="REQUIRED" read-only="true" />
<tx:method name="search*" propagation="REQUIRED" read-only="true" />
<tx:method name="count*" propagation="REQUIRED" read-only="true" />
<tx:method name="save*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="add*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="create*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="insert*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="update*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="delete*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="remove*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="put*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="gen*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="up*" propagation="REQUIRED" rollback-for="Exception"/>
<tx:method name="*" propagation="REQUIRED" rollback-for="Exception"/>
</tx:attributes>
</tx:advice>
<!-- 配置事务拦截器拦截哪些类的哪些方法,一般设置成拦截Service -->
<aop:config>
<!-- 定义在service包或者子包里的任意类的任意方法的执行: -->
<aop:pointcut id="point"
expression=" execution(* com.droxy.service..*.*(..))" />

<aop:advisor advice-ref="advice" pointcut-ref="point" />
</aop:config>
Java方法如下:

/**
* 上传文件
* @param is
* @param suffix
* @return
*/
public Attachment uploadFile(InputStream is,String suffix) {
System.out.println(is.toString());
System.out.println("suffix : "+suffix);
FileOutputStream fos = null;
try{
String fileName = new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date());
File file = new File(Constant.TEMP_IMAGE_DIR+File.separator+fileName+"."+suffix);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}
fos = new FileOutputStream(file);
byte[] b = new byte[1024];
int len = 0;
while((len=is.read(b))!=-1){
fos.write(b, 0, len);
}

BufferedImage image = ImageIO.read(file);

Attachment attachment = new Attachment();
attachment.setName(fileName);
attachment.setSuffix(suffix);
attachment.setPreviewUrl(Constant.TEMP_IMAGE_URL +"/"+ fileName+"."+suffix);
attachment.setWidth(image.getWidth());
attachment.setHeight(image.getHeight());

return attachment;
}catch(Exception e){
e.printStackTrace();
}finally{
if(fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
fos=null;
}
if(is!=null){
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
is=null;
}
}

return null;
}

在jsp中如果用普通的按钮可以调到该方法,但是is会为null,用上传按钮提交,他不会调用uploadFile的方法。

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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