我正在尝试使用添加多个文件上传h:inputFile
.我快速浏览了一下源代码,看来它没有渲染选项multiple="multiple"
.没有编写自定义组件,有没有办法解决这个问题?如果没有,是否有可用的自定义JSF2.2组件可以处理多个Ajax文件上传?
更新:我已经通过了multiple="multiple"
使用passthrough
标签,但是当我调试FileRenderer
相关的代码时,用第二个文件覆盖了第一个文件:
for (Part cur : parts) {
if (clientId.equals(cur.getName())) {
component.setTransient(true);
setSubmittedValue(component, cur);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,由于有两个Part
相同的s clientId
,它总是使用last而不是传递列表.
如果有的话,请推荐替代方案.
我正在尝试在Glassfish 4下调试我的Web应用程序,但由于我在maven pom.xml中只有jee7 API deps,我不能.
是否存在与glassfish源代码相关联的maven依赖项?还有另一种方法可以得到它吗?
谢谢
这是我到目前为止:
这初始化了我的REST服务
package com.dothatapp.web.rest;
import javax.servlet.annotation.MultipartConfig;
import javax.ws.rs.ApplicationPath;
import javax.ws.rs.core.Application;
@ApplicationPath("/authed/rest")
public class JaxRsActivator extends Application {
}
Run Code Online (Sandbox Code Playgroud)
这就是我的服务:
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.Consumes;
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.UriInfo;
import org.json.JSONObject;
@Path("fileupload")
public class FileUpload {
@Context
private UriInfo context;
@POST
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public JSONObject doUpload(@Context HttpServletRequest obj) {
try {
obj.getParts();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(us);
System.out.println(es);
System.out.println(obj);
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我尝试添加@MultipartConfig
到JaxRsActivator
,但我仍然得到一个异常:Request.getParts被称为无多配置.将@MultipartConfig添加到servlet,或将multipart-config元素添加到web.xml.
3-12-08T17:03:05.013+0000|SEVERE: …
Run Code Online (Sandbox Code Playgroud) 我有一个先前已被持久化并@OneToMany
与另一个实体有关系的实体.为了添加新实体,我只需在托管对象中添加我的新实体,并用于cascadeType.ALL
保留更改.有没有办法让我可以获取新创建的对象的id或获取我与合并使用的原始(非托管)对象更新其ID?
在伪代码中,我希望发生以下情况:
示例:父A,id = 13子B,id = 0
本质上,我想merge
在父级persist
上发布一个,但是在子级上进行级联(以便更新原始子实例,而不是复制).
显然这不会发生.我使用hibernate作为提供者.
尝试实现JSF 2.2示例我有以下代码:
<h:form prependId="false" enctype="multipart/form-data">
<!-- Now it's the AJAX file upload component -->
<h:inputFile id="fileUpload" value="#{someBean.file}" >
<f:ajax />
</h:inputFile>
<h:commandButton value="Upload" />
</h:form>
Run Code Online (Sandbox Code Playgroud)
根据一些JSF 2.2,这应该工作,但在我的情况下它给了我以下错误:
请求不包含multipart/form-data或multipart/mixed流,内容类型头是application/x-www-form-urlencoded; charset = UTF-8
查看请求虽然我已正确设置我的表单enctype,但部分请求提交:
内容类型:application/x-www-form-urlencoded; charset = UTF-8 Faces-Request:partial/ajax
请注意,web.xml也被修改为:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<location>c:\dotmp</location>
<max-file-size>20848820</max-file-size>
<max-request-size>418018841</max-request-size>
<file-size-threshold>1048576</file-size-threshold>
</multipart-config>
</servlet>
Run Code Online (Sandbox Code Playgroud)
我正在使用Mojarra 2.2.0-m15,但也尝试使用早期版本.有谁知道关于这个问题的任何有用的信息,我认为这是一个错误?
我在日志中注意到,每次我记录的某些用户发出请求时,都会出现第二个"影子"请求.第二个请求具有与"正常"请求相同的IP和目标,但减少了标头.每次,这都会打开一个新会话.
我观察到这种情况与表格相同.
有什么理由导致这个?
请求标题:
host=www.example.com connection=keep-alive accept=text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8 Upgrade-Insecure-Requests=1 user-agent=Mozilla/5.0 (Linux; Android 5.1.1; Lenovo YT3-X50F Build/LMY47V) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Safari/537.36 referer=https://www.example.com/auth/xyz accept-encoding=gzip, deflate, sdch accept-language=en-GB,en-US;q=0.8,en;q=0.6 cookie=JSESSIONID=XXXXX; _gat=1; _ga=GAXXXXXX
影子请求标头:
Headers=user-agent=Dalvik/2.1.0 (Linux; U; Android 5.1.1; Lenovo YT3-X50F Build/LMY47V) host=www.example.com connection=Keep-Alive accept-encoding=gzip
我可以看到EL属性存储在组件映射中的StateHelper
和字符串文字中getAttributes()
.什么是生命周期以及为什么需要两个容器?
EL ValueExpression
评估的生命周期中的哪些点?(每次getStateHelper.eval()
被叫?)
正如问题所述,OmniFaces是否与JSF 2.2兼容?它是否只依赖于JSF或其他Java EE依赖项?即它能够运行Tomcat + JSF吗?
我正在加入两个RDD rddA
和rddB
.
rddA
有100个分区,rddB
有500个分区.
我试图了解join
操作的机制.默认情况下,无论连接的顺序如何,我都会使用相同的分区结构; ie rddA.join(rddB
)并rddB.join(rddA)
产生相同数量的分区,并通过观察它使用较小的分区大小100.我知道我可以通过使用增加分区大小rddA.join(rddB,500)
,但我更感兴趣的是引擎盖下发生的事情以及为什么选择较小的尺寸.从观察来看,即使我重新分区小rdd
,它的分区仍然会被使用; Spark是否对密钥大小进行任何启发式分析?
我遇到的另一个问题是我得到的偏斜程度.我的较小分区最终有3,314个条目,较大的分区最终为1,139,207,总大小为599,911,729(密钥).两个RDD都使用默认分区程序,因此如何确定数据随机数?我依旧回忆起如果有人rdd
设置了分区器,那就是将要使用的分区器.是这样的吗?是"建议"这样做吗?
最后,请注意我rdd
的两个都比较大(~90GB),因此广播加入无济于事.相反,任何为操作提供一些见解join
的方法都可能是要走的路.
PS.关于机械师左右加入的任何细节都将是一个额外的奖励:)
GF处理多个请求(在本例中为图像)时会出现问题.出于某种原因,响应outputstream
阻塞(对于更大的写入)并且在几秒钟后我得到超时.
我下载了最新的(2013年2月12日)由glassfish repo构建的推广并更换nucleus-grizzly-all.jar
但我仍然遇到同样的问题.
有关导致此问题的原因以及如何解决此问题的任何想法?
谢谢.
例外
java.io.IOException: java.util.concurrent.TimeoutException
at org.glassfish.grizzly.utils.Exceptions.makeIOException(Exceptions.java:81)
at org.glassfish.grizzly.http.io.OutputBuffer.blockAfterWriteIfNeeded(OutputBuffer.java:958)
at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:682)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:355)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:342)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:161)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1793)
at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1769)
at org.apache.commons.io.IOUtils.copy(IOUtils.java:1744)
at com.app.web.servlet.ImageServlet.serveImage(ImageServlet.java:234)
at com.app.web.servlet.ImageServlet.service(ImageServlet.java:157)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:344)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.dothatapp.web.filter.DoThatAppFilter.doFilter(DoThatAppFilter.java:27)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at com.dothatapp.web.filter.AuthFilter.doFilter(AuthFilter.java:113)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:214)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:316)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188)
at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) …
Run Code Online (Sandbox Code Playgroud) 我使用的主要是springdoc
带有spring-boot
注释的配置。
我想公开一个未被任何服务引用的特定类模式。是否有可能做到这一点?
在伪代码中,我实际上正在尝试这样做:
GroupedOpenAPI.parseAndAddClass(Class<?> clazz);
或者
GroupedOpenAPI.scan("my.models.package");
===更新===
我设法使用解析架构ModelConverters.getInstance().readAll(MyClass.class);
然后尝试将其添加为OpenApiCustomiser
,但它在 UI 中仍然不可见。
经历了这些优秀的帖子:
在JavaEE6教程的中途,我仍然有以下问题:
谢谢
jsf ×6
java ×4
jsf-2.2 ×4
glassfish-4 ×3
file-upload ×2
jsf-2 ×2
ajax ×1
android ×1
apache-spark ×1
dalvik ×1
dependencies ×1
grizzly ×1
http ×1
jax-rs ×1
jersey ×1
jpa ×1
mojarra ×1
omnifaces ×1
openapi ×1
servlets ×1
spring-boot ×1
springdoc ×1