webwork中richtexteditor标签图片上传配置和创建中文多级目录乱码问题解决

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"/>

 
一步一步配置就可以将问题解决了。

richTextEditor 富文本编辑器 项目设置 npm install 为开发编译和热重载 npm run serve 为生产编译和缩小 npm run build 整理和修复文件 npm run lint 自定义配置 请参阅。 立即下载

相关推荐

RichTextEditor 扩展

DXperience 9.1.2 Sources 源代码

推荐开源项目:RichTextEditor - 一款强大的Web富文本编辑器

推荐开源项目:RichTextEditor - 一款强大的Web富文本编辑器 去发现同类优质开源项目:https://gitcode.com/ 在web开发中,富文本编辑器是不可或缺的一部分,它允许用户以类似Word的方式创建和编辑内容。今天,我们向大家推荐一个优秀的开源项目——,这是一款轻量级、高度可定制化的富文本编辑器,旨在提供更流畅的用户体验和更多的功能选项。 项目简介 RichTextEd...

gitblog_00069的博客 989

产业园区如何高效对接企业技术需求与高校科研成果?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

富文本编辑器 之 Wang.editer

#富文本编辑器简介: 1.富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器。富文本编辑器不同于文本编辑器,程序员可到网上下载免费的富文本编辑器内嵌于自己的网站或程序里(当然付费的功能会更强大些),方便用户编辑文章或信息。比较好的文本编辑器有kindeditor,fckeditor等 2.富文本编辑器提供类似于 Microsoft...

qq_43423383的博客 575

libiec61850实战:手把手教你用C语言动态获取IED设备模型(附完整代码解析)

本文详细介绍了如何使用libiec61850库通过C语言动态获取IED设备模型,包括环境配置、连接建立、模型遍历及错误处理等关键步骤。通过完整的代码示例和实战案例,帮助开发者掌握智能变电站通信中的核心技术,提升工业自动化系统的开发效率。

weixin_42519985的博客 434

ComfyUI-controlnet控制出图

提供加载预处理器节点。

Bu2n的博客 5494

android简书的富文本编辑,MRichEditor(安卓富文本编辑器)

A rich text editor sample (based on summernote)FeaturesBoldItalicUnderlineStrike-throughHeading 1Heading 2Heading 3Heading 4Heading 5Heading 6ParagraphQuoteOrdered ListUnordered ListCodeHorizontal Rul...

weixin_29099217的博客 732

PCB设计教程【入门篇】——PCB设计基础-PCB构成与组成

本教程基于B站Expert电子实验室的PCB设计教学的整理,为个人学习记录,旨在帮助PCB设计新手入门。所有内容仅作学习交流使用,无任何商业目的。若涉及侵权,请随时联系,将会立即处理。

2501_91732643的博客 7649

java做安卓文本编辑器_Android端富文本编辑器(EditText+Span)开源+实例+详解+细节...

多 格 式 文 本 编 辑 器WMRichTextEditorWMRichTextEditor是一款Android端文本编辑器,目前支持16种编排格式,适用于Android项目的笔记板块的开发。开源地址添加依赖allprojects {repositories {...maven { url 'https://jitpack.io' }}}dependencies {...

weixin_39623620的博客 951

携程景点评论数据爬取实战:破解AJAX动态加载与分页参数逆向分析

本文详细介绍了携程景点评论数据爬取的实战经验,重点破解了AJAX动态加载与分页参数逆向分析的技术难题。通过分析`getCommentCollapseList`接口,解析动态参数如`poiId`和`pageIndex`,并实现分页逻辑,帮助开发者高效获取评论数据。文章还提供了完整的Python爬虫代码和反爬策略,适用于数据分析与内容挖掘。

weixin_29098367的博客 674

AutoSAR系列讲解(深入篇)14.7-Mcal Adc配置(上)

详细讲解了ADC的各个配置项的作用

雪云飞星的博客 1万+

MRichTextEditor 使用指南

MRichTextEditor 使用指南 项目介绍 MRichTextEditor 是一个基于 GitHub 的开源项目,它提供了一个功能丰富的富文本编辑器实现,专为Web应用程序设计。此编辑器旨在简化富文本内容的创建与管理,支持多种格式化选项,包括但不限于加粗、斜体、插入图片、链接以及列表等。项目采用现代前端技术栈开发,确保了良好的用户体验和开发者友好性。 特性亮点: 界面直观易用。 支持M...

gitblog_00006的博客 1211

Apollo EM Planner中路径-速度解耦优化的数学建模与仿真分析

摘要 Apollo EM Planner采用路径-速度解耦优化策略解决自动驾驶运动规划问题。该算法将时空轨迹规划分解为路径规划和速度规划两个子问题:首先在静态环境下生成几何最优路径,再优化沿路径的速度曲线。通过五次多项式表示路径和速度,构建包含平滑性、安全性、舒适性的多目标优化函数,并引入弹性模型处理动态障碍物约束。算法具有解耦优化、弹性适应、实时求解等特点,适用于高速公路、城市交叉口等多种场景。数学建模包括路径几何优化、速度动态优化和弹性势能函数,最终生成满足车辆动力学和环境约束的安全轨迹。

走向CTO的路上... 933

RichTextEditor的用法

<br />如果我们的程序中有个CEikRichTextEditor或者是 CEikEdwin,而且不用控件本身的滚动条来控制文本的滚动的话,我们就需要了解下下面的内容。<br />CTextLayout的这个API-FindDocPos- 可以把控件中文本的位置信息转换为 控件的可视位置的坐标信息,就是以控件的top-left point为坐标的原点,所以如果文本的数目超过了控件的可视范围那么自动向上翻动的文本头转换为位置信息时Y点的坐标就是负的。<br />IMPORT_C TBool Fin

dsj188的专栏 2174

C#上位机开发:西门子/三菱PLC通信,新手直接上手

对着西门子S7协议文档看半天,连“DB块地址怎么写”都搞不懂;写三菱PLC代码时,分不清MC协议和Modbus的区别,代码改来改去连不上;好不容易跑通代码,换个PLC型号又报错,不知道哪里出问题;后来发现,新手学PLC通信根本不用先啃协议文档——先跑通“能通信”的代码,再慢慢理解底层逻辑,效率至少提升3倍。西门子PLC:用S7NetPlus库(新手最友好),实现以太网通信,支持S7-200 SMART/1200/1500;

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 880

【华为OD机试】2024年真题C卷(python)-API集群负载统计

【华为OD机试】-API集群负载统计-【华为OD机试】-API集群负载统计:某个产品的 restful API 集合部署在服务器集群的多个节点上,近期对客户端访问日志进行了采集,需要统计各个API的访问频次,根据热点信息在服务器节点之间做负载均衡,现在需要实现热点信息统计查询功能。 restful API 是由多个层级构成,层级之间使用/连接,如 A/B/C/D 这个地址,A属于第一级,B属于第二级,C属于第三级,D属于第四级。 现在负载均衡模块需要知道给定层级上某个名字出现的频次,未出现过用0

u014481728的博客 1495

Android Framework底层原理(附知识脑图+源码学习手册)30天突破技术壁垒_android framework学习手册(1)

!最后放上一个大概的Android学习方向及思路(详细的内容太多了~),提供给大家:对于程序员来说,要学习的知识内容、技术有太多太多,这里就先放上一部分,其他的内容有机会在后面的文章向大家呈现出来,不过我自己所有的学习资料都整理成了一个文档,一直在不断学习,希望能帮助到大家,也节省大家在网上搜索资料的时间来学习,也可以分享动态给身边好友一起学习!为什么某些人会一直比你优秀,是因为他本身就很优秀还一直在持续努力变得更优秀,而你是不是还在满足于现状内心在窃喜!Android架构师之路很漫长,一起共勉吧!

2401_84544434的博客 1171

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

[android开源]简单富文本编辑器MRichEditor,图文混排算个啥

[android开源]简单富文本编辑器MRichEditor,图文混排算个啥尊重原创,转载请注明出处,原文地址: http://blog.youkuaiyun.com/qq137722697一、前言1、什么是MRichEditorMRichEditor是一款Android开源轻量级的富文本编辑器,它可以根据用户最终撰写的文章创建出对应的html文件。2、可以撰写哪些内容目前支持用户撰写标题、内容、图片(选择相册

大力哥的博客 3万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

富文本编辑器

https://blog.youkuaiyun.com/yaoguaia 什么是富文本编辑器? 富文本编辑器,Rich Text Editor, 简称 RTE, 是一种可内嵌于浏览器,所见即所得的文本编辑器。它是一种解决可一般的用户不同html等网页标记但是需要在网页上设置字体的颜色、大小、样式等信息问题一个文本编辑器 概念对比: 文本文档 =======》world 常用的富文本编辑器:https://blog.youkuaiyun.com/davidhzq/article/details/100842866 wnagE

w19981225的博客 1720

flex html 控制编辑,flex学习笔记 富文本编辑(一)-RichTextEditor

用户可使用 RichTextEditor 控件输入文本并设置其格式。用户可以更改的文本特征包括字体系列、颜色、大小和样式以及其他属性(如文本对齐方式、项目符号和 URL 链接)。该控件由一个包括两个直属子项的 Panel 控件组成:用户可在其中输入文本的 Text Area 控件。具有允许用户指定文本特征的格式控件的容器。格式控件会影响正在键入的文本或所选文本。RichTextEditor 的默认...

weixin_39621860的博客 302

Android 富文本编辑器RichTextEditor 支持图文混排 支持插入和删除图片

实现原理: 使用ScrollView作为最外层布局,里面填充EditText和ImageView。 删除的时候,根据光标的位置,删除EditText和ImageView。 生成的数据为list集合,可自定义处理数据格式。 效果图: RichTextEditor源码: public class RichTextEditor extends ScrollView { p...

little762的博客 4746

使用RichTextEditor请注意

使用RichTextEditor时,有设置全局的ComboBox样式, 如果将设置border-thickness: "","","","";将会影响到RichTextEditor内部的ComboBox,会出现border-thickness is NaN如需要使用请写为:border-thickness-bottom:1;border-thickness-left:1;border-thickn

石头 1157

10款优秀的Rich Text Editor

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34025151的博客 1230

自己实现Rich Text Editor

文章截图 - 更好的排版经过对网上一些常见的RichTextEditor(rte-light, jHTMLArea, NicEdit)的分析后,我决定自己来实现一个。 为的不是重新发明轮子,我也没想把这个做成一个完整的轮子,仅仅是为了学习内部的实现机制。 1. 使IFrame可编辑 为了达到对HTML的编辑,我们不可能在TextArea中完成,这就需要借助一个内嵌的IFrame。 第一个问题就是如...

weixin_34161083的博客 371
上一篇: SSH Secure Shell-Secure Shell Client操作使用说明
下一篇: spring+xfire实现webservice简单例子
全新时代
博客等级 码龄19年 3粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值