- 浏览: 196189 次
- 性别:
- 来自: 上海
最新评论
-
menghuannvxia:
请问下,你的xfire.xml这个文件是怎么写的,放在哪里了
spring+xfire实现webservice简单例子 -
q351505342:
maven部署web工程基础步骤 -
qq672076266:
qq672076266 写道
终于找到一个好用的了。
其他的 ...
JS动态添加select下拉框(城市区域多级下拉框demo) -
qq672076266:
终于找到一个好用的了。
其他的都是原版抄去抄去,真服了.. ...
JS动态添加select下拉框(城市区域多级下拉框demo) -
xfxlch:
...
Java编码音乐播放器简化版
1.webwork中的rechtexteditor图片上传时在使用过程中可能会出现如下问题:
Error on file upload.Error number:203
Invalid file
XML request error:Not Found(404)
同时在创建中文多级目录时候,文件目录为乱码,上传含中文名称图片为乱码,
需要对webwork源码进行修改配置来解决上述出现的问题。
2.\webwork-2.2.4-sources\com\opensymphony\webwork\static\richtexteditor\拷贝到工程的\webapp\webwork\richtexteditor\目录下面(如果\webwork\richtexteditor\目录不存在,手动建立),同时在webapp目录下面手动建立\upload\Image\文件夹,用来保存上传的图片
主要对\webwork-2.2.4-sources\~\static\richtexteditor\editor\filemanager\browser\default\下面源文件修改,
目标:上传图片名称里面含中文避免乱码
位置:\webapp\webwork\richtexteditor\editor\filemanager\browser\default\frmupload.html
添加代码:<meta http-equiv="content-type" content="text/html; charset=UTF-8">
目标:创建目录名称里面含中文避免乱码
位置:\webapp\webwork\richtexteditor\editor\filemanager\browser\default\frmcreatefolder.html
代码:oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + escape( sFolderName) , CreateFolderCallBack ) ;
换成:oConnector.SendCommand( 'CreateFolder', 'NewFolderName=' + sFolderName , CreateFolderCallBack ) ;
位置:\webapp\webwork\richtexteditor\editor\filemanager\browser\default\browser.html
代码:
oConnector.SendCommand = function( command, params, callBackFunction )
{
var sUrl = this.ConnectorUrl + 'Command=' + command ;
sUrl += '&Type=' + this.ResourceType ;
sUrl += '&CurrentFolder=' + escape( this.CurrentFolder ) ;
if ( params ) sUrl += '&' + params ;
var oXML = new FCKXml() ;
if ( callBackFunction )
oXML.LoadUrl( sUrl, callBackFunction ) ; // Asynchronous load.
else
return oXML.LoadUrl( sUrl ) ;
}
换成:
oConnector.SendCommand = function( command, params, callBackFunction )
{
var sUrl = this.ConnectorUrl + 'Command=' + command ;
sUrl += '&Type=' + this.ResourceType ;
sUrl += '&CurrentFolder=' + this.CurrentFolder ;
if ( params ) sUrl += '&' + params ;
var oXML = new FCKXml() ;
if ( callBackFunction )
oXML.LoadUrl( sUrl, callBackFunction ) ; // Asynchronous load.
else
return oXML.LoadUrl( sUrl ) ;
}
3.修改webwork.properties文件,使用当前的端口和\webapp\webwork\文件夹
### used to build URLs, such as the UrlTag webwork.url.http.port = 8081 ###false not to read webwork.jar.but to read the webwork folder under ther website webwork.serve.static=false
4.在src目录下面建立4个java文件,如:
org.RichtexteditorConnector,
org.RichtexteditorCreateFolderResultLocal,
org.RichtexteditorGetFoldersAndFilesResultLocal,
org.RichtexteditorGetFoldersResultLocal
代码(org.RichtexteditorConnector):
/** * @author hjl * @date 2009-4-17 * @function * @version */ public class RichtexteditorConnector extends DefaultRichtexteditorConnector { private static final long serialVersionUID = 1L; protected String calculateActualServerPath(String actualServerPath, String type, String folderPath) throws Exception {//解决不能创建目录问题 String path = StringUtils .replaceChars("file:///" + servletContext.getRealPath("/" + actualServerPath), '\\', '/'); makeDirIfNotExists(path); path = path.endsWith("/") ? path : path + "/"; return path + type + folderPath; } /** * 创建中文目录时转码 */ @Override protected CreateFolderResult createFolder(String virtualFolderPath, String type, String newFolderName) { try { String tmpPath = calculateActualServerPath(getActualServerPath(), type, virtualFolderPath); tmpPath = tmpPath+newFolderName; //dir 中文 tmpPath = new String(tmpPath.getBytes("ISO-8859-1"),"gbk"); // System.out.println("tmpPath:"+tmpPath); boolean alreadyExists = makeDirIfNotExists(tmpPath); if (alreadyExists) { return CreateFolderResult.folderAlreadyExists(); } } catch(Exception e) { return CreateFolderResult.unknownError(); } return CreateFolderResult.noErrors(); } /** * 中文文件夹显示转码 */ @Override protected FoldersAndFiles getFoldersAndFiles(String virtualFolderPath, String type) throws Exception { String path = calculateActualServerPath(getActualServerPath(), type, virtualFolderPath); //dir 中文 path = new String(path.getBytes("ISO-8859-1"),"gbk"); makeDirIfNotExists(path); java.io.File f = new java.io.File(new URI(path)); java.io.File[] children = f.listFiles(); List directories = new ArrayList(); List files = new ArrayList(); for (int a=0; a< children.length; a++) { if (children[a].isDirectory()) { directories.add(new Folder(children[a].getName())); } else { try { files.add(new File(children[a].getName(), fileSizeInKBytes(children[a]))); } catch(Exception e) { e.printStackTrace(); } } } return new FoldersAndFiles( (Folder[]) directories.toArray(new Folder[0]), (File[]) files.toArray(new File[0]) ); } @Override protected Folder[] getFolders(String virtualFolderPath, String type) throws Exception { String path = calculateActualServerPath(getActualServerPath(), type, virtualFolderPath); //dir 中文 path = new String(path.getBytes("ISO-8859-1"),"gbk"); makeDirIfNotExists(path); java.io.File f = new java.io.File(new URI(path)); java.io.File[] children = f.listFiles(new FileFilter() { public boolean accept(java.io.File pathname) { if (! pathname.isFile()) { return true; } return false; } }); List tmpFolders = new ArrayList(); for (int a=0; a< children.length; a++) { tmpFolders.add(new Folder(children[a].getName())); } return (Folder[]) tmpFolders.toArray(new Folder[0]); } @Override protected FileUploadResult fileUpload(String virtualFolderPath, String type, String filename, String contentType, java.io.File newFile) { try { virtualFolderPath = new String(virtualFolderPath.getBytes("ISO-8859-1"),"UTF-8"); String tmpDir = calculateActualServerPath(getActualServerPath(), type, virtualFolderPath); makeDirIfNotExists(tmpDir); String tmpFile = tmpDir + filename; if(makeFileIfNotExists(tmpFile)) { // already exists int a=0; String ext = String.valueOf(a); tmpFile = calculateActualServerPath(getActualServerPath(), type, virtualFolderPath)+filename+ext; while(makeFileIfNotExists(tmpFile)) { a = a + 1; ext = String.valueOf(a); if (a > 100) { return FileUploadResult.invalidFile(); } } copyFile(newFile, new java.io.File(new URI(tmpFile))); return FileUploadResult.uploadCompleteWithFilenamChanged(filename+ext); } else { copyFile(newFile, new java.io.File(new URI(tmpFile))); return FileUploadResult.uploadComplete(); } } catch(Exception e) { return FileUploadResult.invalidFile(); } } private ServletContext servletContext; public void setServletContext(ServletContext servletContext) { this.servletContext = servletContext; } }
代码(org.RichtexteditorCreateFolderResultLocal):
/** * @author hjl * @date 2009-4-20 * @function * @version */ public class RichtexteditorCreateFolderResultLocal extends RichtexteditorCreateFolderResult { @Override public void execute(ActionInvocation invocation) throws Exception { HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control","no-cache"); OutputStream os = response.getOutputStream(); CreateFolderResult createFolderResult = richtexteditorCreateFolderResult(invocation); // CurrentFolder问题,转换为中文 String currentFolder_path = getFolderPath(invocation); currentFolder_path = new String(currentFolder_path.getBytes("ISO-8859-1"),"GBK"); String currentFolder_url = getServerPath(invocation); currentFolder_url = new String(currentFolder_url.getBytes("ISO-8859-1"),"GBK"); Document document = buildDocument(); Element root = buildCommonResponseXml(document, getCommand(invocation), getType(invocation), currentFolder_path, currentFolder_url); Element errorElement = document.createElement("Error"); errorElement.setAttribute("number", createFolderResult.getCode()); root.appendChild(errorElement); // if (_log.isDebugEnabled()) { // String result = stringFromDocument(document); // _log.debug(result); // } writeDocumentToStream(document, os); os.flush(); os.close(); } }
代码(org.RichtexteditorGetFoldersAndFilesResultLocal):
/** * @author hjl * @date 2009-4-20 * @function * @version */ public class RichtexteditorGetFoldersAndFilesResultLocal extends RichtexteditorGetFoldersAndFilesResult { /** * */ private static final long serialVersionUID = 1L; @Override public void execute(ActionInvocation invocation) throws Exception { // System.out.println("====本地===="); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control","no-cache"); OutputStream os = response.getOutputStream(); Document document = buildDocument(); //CurrentFolder问题,转换为中文 String currentFolder_path = getFolderPath(invocation); currentFolder_path = new String(currentFolder_path.getBytes("ISO-8859-1"),"GBK"); String currentFolder_url = getServerPath(invocation); currentFolder_url = new String(currentFolder_url.getBytes("ISO-8859-1"),"GBK"); // Element root = buildCommonResponseXml(document, // getCommand(invocation), getType(invocation), // getFolderPath(invocation), getServerPath(invocation)); //buildCommonResponseXml这个方法是关键 MAIN() Element root = buildCommonResponseXml(document, getCommand(invocation), getType(invocation), currentFolder_path, currentFolder_url); FoldersAndFiles foldersAndFiles = richtexteditorFoldersAndFiles(invocation); Folder[] folders = foldersAndFiles.getFolders(); File[] files = foldersAndFiles.getFiles(); Element foldersElement = document.createElement("Folders"); if (folders != null) { for (int a=0; a< folders.length; a++) { Element folderElement = document.createElement("Folder"); folderElement.setAttribute("name", folders[a].getFoldername()); foldersElement.appendChild(folderElement); } } root.appendChild(foldersElement); Element filesElement = document.createElement("Files"); if (files != null) { for (int a=0; a< files.length; a++) { Element fileElement = document.createElement("File"); fileElement.setAttribute("name", files[a].getFilename()); fileElement.setAttribute("size", String.valueOf(files[a].getSizeInKb())); filesElement.appendChild(fileElement); } } root.appendChild(filesElement); // if (_log.isDebugEnabled()) { // String result = stringFromDocument(document); // _log.debug(result); // } writeDocumentToStream(document, os); os.flush(); os.close(); } }
代码(org.RichtexteditorGetFoldersResultLocal):
/** * @author hjl * @date 2009-4-20 * @function * @version */ public class RichtexteditorGetFoldersResultLocal extends RichtexteditorGetFoldersResult { @Override public void execute(ActionInvocation invocation) throws Exception { Folder[] folders = richtexteditorFolders(invocation); HttpServletResponse response = ServletActionContext.getResponse(); response.setContentType("text/xml; charset=UTF-8"); response.setHeader("Cache-Control","no-cache"); OutputStream os = response.getOutputStream(); Document document = buildDocument(); // CurrentFolder问题,转换为中文 String currentFolder_path = getFolderPath(invocation); currentFolder_path = new String(currentFolder_path.getBytes("ISO-8859-1"),"GBK"); String currentFolder_url = getServerPath(invocation); currentFolder_url = new String(currentFolder_url.getBytes("ISO-8859-1"),"GBK"); Element root = buildCommonResponseXml(document, getCommand(invocation), getType(invocation), currentFolder_path, currentFolder_url); Element foldersElement = document.createElement("Folders"); if (folders != null) { for (int a=0; a< folders.length; a++) { Element folderElement = document.createElement("Folder"); folderElement.setAttribute("name", folders[a].getFoldername()); foldersElement.appendChild(folderElement); } } root.appendChild(foldersElement); // if (_log.isDebugEnabled()) { // String result = stringFromDocument(document); // _log.debug(result); // } writeDocumentToStream(document, os); os.flush(); os.close(); } }
5.在xwork.xml文件中添加如下代码:
<package name="richtexteditor-browse" extends="webwork-default" namespace="/webwork/richtexteditor/editor/filemanager/browser/default/connectors/jsp"> <result-types> <result-type name="richtexteditorGetFolders" class="org.RichtexteditorGetFoldersResultLocal" /> <result-type name="richtexteditorGetFoldersAndFiles" class="org.RichtexteditorGetFoldersAndFilesResultLocal" /> <result-type name="richtexteditorCreateFolder" class="org.RichtexteditorCreateFolderResultLocal" /> </result-types> <action name="connector" class="org.RichtexteditorConnector" method="browse"> <param name="actualServerPath"> /upload/ </param> <param name="serverPath"> /upload/ </param> <result name="getFolders" type="richtexteditorGetFolders" /> <result name="getFoldersAndFiles" type="richtexteditorGetFoldersAndFiles" /> <result name="createFolder" type="richtexteditorCreateFolder" /> <result name="fileUpload" type="richtexteditorFileUpload" /> </action> </package> <package name="richtexteditor-upload" extends="webwork-default" namespace="/webwork/richtexteditor/editor/filemanager/upload"> <action name="uploader" class="org.RichtexteditorConnector" method="upload"> <param name="actualServerPath"> /upload/ </param> <param name="serverPath"> /upload/ </param> <result name="richtexteditorFileUpload" /> </action> </package>
6.同时pom.xml jar必须有:
<dependencies> <dependency> <groupId>opensymphony</groupId> <artifactId>webwork</artifactId> <version>2.2.4</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring</artifactId> <version>2.0-rc2</version> </dependency> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.1</version> </dependency> </dependencies>
最后在ftl页面中显示出来:
<@ww.richtexteditor defaultLanguage ="zh-cn" toolbarCanCollapse="false" label="内容(content):" height ="360" name="model.content"/>
一步一步配置就可以将问题解决了。
发表评论
-
php fck文件夹及上传图片中文乱码问题解决方法
2012-05-21 15:13 2337主要原因是fck中的编(utf-8)码和本地的编码(gbk)环 ... -
extremecomponents补充说明
2012-04-20 16:49 3356<%@ taglib uri="/WEB-IN ... -
Hibernate count如何映射?HQL别名字段问题?
2012-03-01 11:43 8949问:hibernate, select name, count ... -
Hibernate入门级添删改查核心代码
2012-02-16 18:01 1178public static void main(String[ ... -
XML request error: Internal Server Error (500)解决方法
2011-08-29 17:42 5615XML request error: Internal Ser ... -
htmlparser学习总结
2010-11-19 17:14 5153由于公司需要,开发了一个抓取网上数据爬虫的程序,如抓取点评网、 ... -
FCKeditor fileupload Error on file upload.Error number:203分析解决
2009-10-28 14:59 3070问题描述:还发现了个问题,这个编辑器的上传功能和webwork ... -
xfire传入传出自定义类型和集合类型-webservice分析
2009-08-12 23:01 53691.xfire eclipse插件安装步骤,详细内容见:htt ... -
maven+jdk1.5编译部署工程(请尝试使用 -source 1.5 以启用注释)问题说明
2009-08-12 22:58 43361.接上文|maven部署web工 ... -
spring+xfire实现webservice简单例子
2009-06-04 20:29 15389spring xfire是一种比较简单的webservcie方 ... -
webwork上传异常分析:getReader() or getInputStream() call
2008-08-06 01:16 3024在使用webwork-2.2.4.jar,xwork-1.2. ... -
webwork日期验证&Invalid field value for field Birthday
2008-07-18 00:54 58401.webwork源码分析: com.opensymphony ... -
解决webwork客户端验证提示信息重复多次显示问题
2008-07-18 00:41 15931.我们在使用webwork验证,可以分为两种情况讨论,下面提 ... -
ww.action标签在freemarker中的问题
2008-07-16 00:50 36181.问题描述: 在freemarke ... -
Freemarker标签说明及combobox支持问题解决方法
2008-07-11 17:45 5315FreeMarker template error! on l ... -
extremecomponents pdf 导出中文问题分析
2008-04-15 16:06 4064步骤一:准备工作 1.在 ...
相关推荐
WebWork的ww标签库极大地方便了开发者在JSP页面上的数据操作和逻辑控制,通过使用`<ww:if>`、`<ww:iterator>`、`<ww:set>`和`<ww:property>`等标签,开发者可以更简洁、高效地编写动态页面,减少代码量,提高开发...
WebWork标签库分为多个类别,包括通用标签、组件化标签、流程控制标签、迭代标签、UI标签、VUI标签以及国际化支持标签。 1. **通用标签**: - `<ww:property>`:用于获取结果的属性值,如果未指定值,将从值栈顶部...
WebWork是一个开源的Java Web应用程序框架,...无论你是初学者还是经验丰富的开发者,都可以从中找到所需的信息,解决实际开发中的问题。通过阅读和理解这份文档,你将能够熟练地利用WebWork构建高效、稳定的Web应用。
### WebWork中文学习资料 #### WebWork框架概览 WebWork是一个由OpenSymphony组织开发的J2EE Web框架,其设计目标在于组件化和代码重用,采用MVC(Model-View-Controller)模式。WebWork框架的核心分为两部分:...
这些标签共同构成了WebWork框架数据处理的核心部分,通过对它们的理解和掌握,开发者可以更加高效地构建和管理Web应用中的数据流,提升应用程序的性能和用户体验。在实际开发中,合理运用这些标签,不仅可以简化编码...
从给定的文件信息来看,标题和描述都指向了“webwork中文文档”,这暗示了文档的主要内容将围绕WebWork框架展开。WebWork是一个开源的Java Web应用开发框架,它在2000年初非常流行,是Struts框架的一个替代方案,...
WebWork 是一款基于 Java 的 MVC(Model-View-Controller)框架,它提供了强大的标签库来简化JSP页面的开发。这些标签使得开发者能够更高效地处理业务逻辑、数据展示和用户交互。以下是对WebWork标签的详细介绍: 1...
在本例中,我们关注的是使用WebWork框架在Java环境中实现文件上传。WebWork是一个轻量级的MVC(Model-View-Controller)框架,它提供了处理HTTP请求和响应的强大工具,包括文件上传。 首先,我们需要了解WebWork的...
在WebWork的学习过程中,了解它的设计理念、掌握Action的创建和配置,以及熟练使用拦截器和值栈,将有助于提升你构建高效、可维护的Java Web应用的能力。同时,WebWork与Struts2的紧密联系,也意味着学习WebWork对...
在这个“WebWork2配置”主题中,我们将深入探讨如何设置和优化WebWork2框架,以便在你的项目中实现高效且可维护的代码。 首先,WebWork2的配置主要涉及到以下几个方面: 1. **web.xml配置**:这是所有Java Web应用...
在学习过程中,除了阅读手册,还建议动手实践,结合实际项目加深理解,以便更好地应用WebWork框架解决实际问题。此外,了解WebWork的进化历程和它如何与Struts2等其他框架融合也很有帮助,因为这能让你了解框架的...
在Web开发中,文件上传和下载是常见的功能需求,本Demo展示了如何在WebWork框架下实现这两个操作。 首先,我们要理解上传和下载的基本原理。文件上传是指用户通过Web表单选择本地文件,然后将其发送到服务器的过程...
webwork2.17中文使用手册
控制反转(IoC)是一种设计原则,它将对象的创建和管理职责从应用程序代码转移到外部容器,如配置文件或依赖注入框架。这样,代码不再直接创建对象,而是声明它们所需的依赖关系,由IoC容器负责实例化和装配这些依赖...
在WebWork中,配置文件起着至关重要的作用,特别是`xwork.xml`和`web.xml`。 `xwork.xml`是WebWork的核心配置文件,用于定义动作(Action)和它们的行为。这个文件主要包括以下部分: 1. **Action配置**:在这个...
在本教程中,你将学习如何配置WebWork2的XML配置文件,包括Action Mapping、Interceptor配置等。你还将了解如何创建和使用Action,以及如何实现视图的跳转。教程还将涵盖WebWork2与其他技术(如Spring、Hibernate)...
在提供的"Webwork2 Guide.pdf"文档中,你可能会学习到如何安装配置WebWork2环境,创建和运行第一个WebWork应用程序,理解Action和Interceptor的工作原理,以及如何利用WebWork的特性进行表单处理、异常管理和国际化...
WebWork UI标签是一种用于构建Web应用程序用户界面的组件,它提供了丰富的功能,使得开发者能够更加便捷地创建交互式的Web页面。WebWork是一个不绑定特定视图技术的框架,支持多种模板语言,如JSP、Velocity和...
在提供的配置中,创建了一个名为 "default" 的包,并扩展了 "webwork-default" 包,这意味着它继承了父包的所有配置。 - **Action** 配置:每个 `<action>` 元素定义了一个特定的业务逻辑处理单元。`name` 属性是 ...
3. **视图与模板**:探讨JSP、FreeMarker或其他模板引擎在WebWork2中的使用,解释如何创建和管理视图组件,以及如何通过OGNL(Object-Graph Navigation Language)表达式在视图中访问模型数据。 4. **模型**:讨论...