- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
寻找如何使用 servlet 加载 xls 并将该 xls 设置到电子表格中。我无法将电子表格连接到 servlet,因为它始终为空。另外,我无法使用
获取 bean EventComposerEventComposer loadFileServlet = (EventComposer)SpringUtil.getBean("eventComposer");
不知何故,我需要在 servlet 中获取电子表格并将 xls 传递到其中。
或者简单地说:如何从servlet中的Composer(jsp)获取Speradseet
我有jsp文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>zk</title>
<zssjsp:head/>
</head>
<body>
<div width="100%" style="height: 100%;">
<zssjsp:spreadsheet id="ss" src="/WEB-INF/books/hide.xlsx" apply="org.autto.zk.EventComposer"
width="100%" height="100%" maxVisibleRows="200" maxVisibleColumns="40"
showToolbar="true" showFormulabar="true" showContextMenu="true" showSheetbar="true"/>
</div>
</body>
</html>
带有电子表格的EventComposer
public class EventComposer extends SelectorComposer<Component> {
**********
@Wire
private Spreadsheet ss;
//for testing, check xls loaded into spreadsheet after stop editing
@Listen("onStopEditing = #ss")
public void showBook() throws IOException {
Path path = Paths.get("D:\\Documents\\zssjspdemo-master\\src\\main\\webapp\\upload\\blank.xls");
File file = path.toFile();
Importer importer = Importers.getImporter();
Book book = importer.imports(getStreamData(file), "hide");
ss.setBook(book);
}
********
}
还有servlet
@WebServlet("/load")
public class LoadFileServlet extends HttpServlet {
@Wire
private Spreadsheet ss; // this spreadsheet null, can't wire it
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
boolean isMultipart = ServletFileUpload.isMultipartContent(req);
if (!isMultipart) {
resp.sendError(HttpServletResponse.SC_BAD_REQUEST);
return;
}
DiskFileItemFactory factory = new DiskFileItemFactory();
factory.setSizeThreshold(1024 * 1024);
File tempDir = (File)getServletContext().getAttribute("javax.servlet.context.tempdir");
factory.setRepository(tempDir);
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setSizeMax(1024 * 1024 * 10);
try {
List items = upload.parseRequest(req);
Iterator iter = items.iterator();
while (iter.hasNext()) {
FileItem item = (FileItem)iter.next();
if (item.isFormField()) {
processFormField(item);
} else {
processUploadedFile(item);
**//whant to do something like this but ss is null
Importer importer = Importers.getImporter();
Book book = importer.imports(getStreamData(item), "hide");
ss.setBook(book);**
}
}
} catch (Exception e) {
e.printStackTrace();
resp.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
return;
}
}
/**
* save file to upload folder.
* folder should be created already
*
* @param item
* @throws Exception
*/
private void processUploadedFile(FileItem item) throws Exception {
File uploadedFile = null;
do {
String path = getServletContext().getRealPath("/upload/" + item.getName());
uploadedFile = new File(path);
} while (uploadedFile.exists());
uploadedFile.createNewFile();
item.write(uploadedFile);
}
}
pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.zkoss.zss</groupId>
<artifactId>home</artifactId>
<version>3.9.5-Eval</version>
<properties>
<commons-io>1.3.1</commons-io>
<maven.build.timestamp.format>yyyy-MM-dd</maven.build.timestamp.format>
<packname>-${project.version}-FL-${maven.build.timestamp}</packname>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<packaging>war</packaging>
<name>The zssjsp demo Project</name>
<description>The zssjspdemo Project</description>
<licenses>
<license>
<name>GNU LESSER GENERAL PUBLIC LICENSE, Version 3</name>
<url>http://www.gnu.org/licenses/lgpl.html</url>
<distribution>repo</distribution>
</license>
</licenses>
<repositories>
<repository>
<id>ZK CE</id>
<name>ZK CE Repository</name>
<url>http://mavensync.zkoss.org/maven2</url>
</repository>
<repository>
<id>ZK EVAL</id>
<name>ZK Evaluation Repository</name>
<url>http://mavensync.zkoss.org/eval</url>
</repository>
<repository>
<id>prime-repo</id>
<name>PrimeFaces Maven Repository</name>
<url>http://repository.primefaces.org</url>
<layout>default</layout>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>zkmaven</id>
<name>ZK Maven Plugin Repository</name>
<url>http://mavensync.zkoss.org/maven2/</url>
</pluginRepository>
</pluginRepositories>
<dependencies>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>${commons-io}</version>
</dependency>
<dependency>
<groupId>org.zkoss.zss</groupId>
<artifactId>zssex</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>org.zkoss.zss</groupId>
<artifactId>zssjsp</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.3.11.RELEASE</version>
</dependency>
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.9.6</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.9.5</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.7</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
<!-- https://search.maven.org/remotecontent?filepath=org/apache/httpcomponents/httpclient/4.5.9/httpclient-4.5.9.jar -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.9</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>25.0.0.redhat-1</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.1.7.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>4.1.7.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.2.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>4.1.7.RELEASE</version>
</dependency>
</dependencies>
<build>
<finalName>${project.artifactId}</finalName>
<plugins>
<!-- Run with Jetty -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
<configuration>
<scanIntervalSeconds>5</scanIntervalSeconds>
<stopKey>foo</stopKey>
<stopPort>9999</stopPort>
<contextPath>/</contextPath>
</configuration>
</plugin>
</plugins>
</build>
</project>
UPD 1:感谢 Hawk 的想法:现在如何运作:1.添加了processShowBook(item, req, resp);请求:
private void processShowBook(FileItem item, HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
request.setAttribute("string", getPathString(item));
request.getRequestDispatcher("/index.jsp").forward(request,response);
}
已添加到 Composer
public void doAfterCompose(Component comp) throws Exception {
super.doAfterCompose(comp);
String s = (String)((HttpServletRequest)Executions.getCurrent().getNativeRequest()).getAttribute("string");
if (s != null) {
showBook(s);
}
}
public void showBook(String s) throws IOException {
Path path = Paths.get(s);
File file = path.toFile();
Importer importer = Importers.getImporter();
Book book = importer.imports(getStreamData(file), "hide");
ss.setBook(book);
}
我通过请求尝试了部分传递的两种变体在这两种方式中,我都有书或字符串路径。电子表格也可用,但未更新。为什么?
如果我添加 @Listen("onStopEditing = #ss") 从另一边到showBook方法,并传递Path字符串,编辑exl并输入回车,电子表格被更新。
UPD 2:问题是,当加载 ss 时,它的 id 为 8418(示例)。当我发送请求并调用 doAfterCompose 时,id 是 8452。当我编辑单元格并再次触发 onCellSelection id 8418 时。并且有不同的 session 。
正如我所理解的,当 servlet 将请求重定向到 index.jsp/zul 时,我在调用 doAfterCompose 时创建了新对象 ss,但仍然有旧的 Activity ss。我怎样才能避免这种情况?
最佳答案
ZK Composer 存在于由 ZK 创建的特定“桌面”范围内,该范围比 session 短,但比请求长。每次您加载(或重新加载)带有 ZK 组件的页面时,服务器都会创建一个新组件和一个新组合器,并将页面上的组件连接到组合器中,然后该组件会向您的浏览器呈现一个 javascript 小部件。渲染的 javascript 小部件和 java 组件形成一对。当您与小部件交互时,它会向服务器发出 AJAX 请求,而不是重新加载整个页面。ZK有自己的流程来控制composer的生命周期,你自己创建的composer(如new EventComposer())与ZK框架创建的composer不一样。
我推荐 3 种方法:
由于zul提供了更丰富的功能,因此您可以在zul中使用FileUpload组件来实现上传功能。因此,同一页面中的 2 个 zk 组件(FileUpload 和 Spreadsheet)之间的通信更容易。然后你只需要在jsp中包含zul,就像jsp菜单示例一样。如何实现上传,请引用开发引用中的文件上传
您可以通过您当前的servlet方式实现上传。1. 将 Book 对象(由 Importer 生成)存储为 HttpServletRequest
属性。2.用电子表格将请求转发(保持请求不变)到JSP3. 在 Composer.doAfterCompose()
中获取这本书((HttpServletRequest)Excuctions.getCurrent().getNativeRequest()).getAttribute()
另一种方法是:1.直接将xls文件存放在特定文件夹中2. 将文件名作为查询字符串传递3.使用电子表格将请求转发到JSP4.通过HttpServletRequest.getParameter()获取查询字符串(文件名)5.导入文件
检查this example这很简单,但展示了这个想法。
@Wire
在 Servlet 中不起作用@Wire
是ZK注解,仅在ZKSelectorComposer
中起作用
关于java - ZK框架: Load xls into ZK Spreadseet from Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59329554/
我需要开发一个简单的网站,我通常使用 bootstrap CSS 框架,但是我想使用 Gumbyn,它允许我使用 16 列而不是 12 列。 我想知道是否: 我可以轻松地改变绿色吗? 如何使用固定布局
这个问题在这里已经有了答案: 关闭 13 年前。 与直接编写 PHP 代码相比,使用 PHP 框架有哪些优点/缺点?
我开发了一个 Spring/JPA 应用程序:服务、存储库和域层即将完成。 唯一缺少的层是网络层。我正在考虑将 Playframework 2.0 用于 Web 层,但我不确定是否可以在我的 Play
我现有的 struts Web 应用程序具有单点登录功能。然后我将使用 spring 框架创建一个不同的 Web 应用程序。然后想要使用从 struts 应用程序登录的用户来链接新的 spring 应
我首先使用Spark框架和ORMLite处理网页上表单提交的数据,在提交中文字符时看到了unicode问题。我首先想到问题可能是由于ORMLite,因为我的MySQL数据库的字符集已设置为使用utf8
我有一个使用 .Net 4.5 功能的模块,我们的应用程序也适用于 XP 用户。所以我正在考虑将这个 .net 4.5 依赖模块移动到单独的项目中。我怎样才能有一个解决方案,其中有两个项目针对不同的版
我知道这是一个非常笼统的问题,但我想我并不是真的在寻找明确的答案。作为 PHP 框架的新手,我很难理解它。 Javascript 框架,尤其是带有 UI 扩展的框架,似乎通过将 JS 代码与设计分开来
我需要收集一些关于现有 ORM 解决方案的信息。 请随意编写任何编程语言。 你能谈谈你用过的最好的 ORM 框架吗?为什么它比其他的更好? 最佳答案 我使用了 NHibernate 和 Entity
除了 Apple 的 SDK 之外,还有什么强大的 iPhone 框架可供开始开发?有没有可以加快开发时间的方法? 最佳答案 此类框架最大的是Three20 。 Facebook 和许多其他公司都使用
有人可以启发我使用 NodeJS 的 Web 框架吗?我最近开始从免费代码营学习express js,虽然一切进展顺利,但我对express到底是什么感到困惑。是全栈框架吗?纯粹是为了后端吗?我发现您
您可以推荐哪种 Ajax 框架/工具包来构建使用 struts 的 Web 应用程序的 GUI? 最佳答案 我会说你的 AJAX/javascript 库选择应该较少取决于你的后端是如何实现的,而更多
我有生成以下错误的 python 代码: objc[36554]: Class TKApplication is implemented in both /Library/Frameworks/Tk.
首先,很抱歉,如果我问的问题很明显,因为我没有编程背景,那我去吧: 我想运行一系列测试场景并在背景部分声明了几个变量(我打印它们以仔细检查它们是否已正确声明),第一个是整数,另外两个字符串为你可以看到
在我们承担的一个项目中,我们正在寻找一个视频捕获和录制库。我们的基础工作(基于 google 搜索)表明 vlc (libvlc)、ffmpeg (libavcodec) 和 gstreamer 是三
我试过没有运气的情况下寻找某种功能来杀死/中断Play中的正常工作!框架。 我想念什么吗?还是玩了!实际没有添加此功能? 最佳答案 Java stop类中没有像Thread方法那样的东西,由于种种原因
我们希望在我们的系统中保留所有重大事件的记录。例如,在数据库可能存储当前用户状态的地方,事件日志应记录对该状态的所有更改以及更改发生的时间。 事件记录工具应该尽可能接近于事件引发器的零开销,应该容纳结
那里有 ActionScript 2.0/3.0 的测试框架列表吗? 最佳答案 2010-05-18 更新 由于这篇文章有点旧,而且我刚刚收到了赞成票,因此可能值得提供一些更新的信息,这样人们就不会追
我有一个巨大的 numpy 数组列表(一维),它们是不同事件的时间序列。每个点都有一个标签,我想根据其标签对 numpy 数组进行窗口化。我的标签是 0、1 和 2。每个窗口都有一个固定的大小 M。
我是 Play 的新手!并编写了我的第一个应用程序。这个应用程序有一组它依赖的 URL,从 XML 响应中提取数据并返回有效的 URL。 此应用程序需要在不同的环境(Dev、Staging 和 Pro
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 4年前关闭。 Improve thi
我是一名优秀的程序员,十分优秀!