Javascript 复合组件之间的集成&x27;JSF中的s属性和Servlet
我试图以最独立的方式与JSF集成,因为我创建了一个复合组件 要在我的JSF页面中使用Plupload,我只需调用:Javascript 复合组件之间的集成&x27;JSF中的s属性和Servlet,javascript,jsf,servlets,plupload,Javascript,Jsf,Servlets,Plupload,我试图以最独立的方式与JSF集成,因为我创建了一个复合组件 要在我的JSF页面中使用Plupload,我只需调用: <comp:plupload ... value=#{MyBean.files} /> 其中MyBean.files是一个列表 当我向Plupload组件添加文件并单击“开始上载”按钮时,我希望它将所有内容上载到临时文件夹,并用这些文件属性(例如,路径)填充复合组件“值”中指定的对象 为了上传我正在使用的文件,servlet与JSF无关,它在第一部分工作得很好:它
<comp:plupload ... value=#{MyBean.files} />
其中MyBean.files是一个列表
当我向Plupload组件添加文件并单击“开始上载”按钮时,我希望它将所有内容上载到临时文件夹,并用这些文件属性(例如,路径)填充复合组件“值”中指定的对象
为了上传我正在使用的文件,servlet与JSF无关,它在第一部分工作得很好:它将所有内容上传到一个临时文件夹。我的问题是第二部分,我做了很多研究,但是我找不到一种方法将JSF复合组件中的属性“value”传递给servlet
Plupload使用javascript配置所有内容,请求将发送到以下代码中属性“URL”中指定的URL:
<composite:interface>
...
<composite:attribute name="value" required="true" />
</composite:interface>
<composite:implementation>
...
<script type="text/javascript">
// Convert divs to queue widgets when the DOM is ready
$(function() {
$("#uploader").pluploadQueue({
// General settings
runtimes : '#{cc.attrs.runtimePreferences}',
url : '/plupload',
max_file_size : '#{cc.attrs.maxFileSize}',
...
});
});
</script>
<div id="uploader">
<p><h:outputText value="Your browser does not support this." /></p>
</div>
</composite:implementation>
...
...
//当DOM就绪时,将div转换为队列小部件
$(函数(){
$(“#上传器”).pluploadQueue({
//一般设置
运行时:“#{cc.attrs.runtimePreferences}”,
url:“/plupload”,
最大文件大小:“#{cc.attrs.maxFileSize}”,
...
});
});
我指定“/plupload”作为url,这是我的servlet的url(在web.xml中)
我可以考虑两种可能的解决方案:
提前感谢您的回答;)将其作为请求路径信息发送
url: '/plupload/' + encodeURIComponent('#{cc.attrs.value}'), // You might want to escape JS special characters like singlequotes, newlines, etc as well, depending on what the value can contain.
如果servlet映射到/plupload/*
上,则可以按如下方式获取它:
String value = request.getPathInfo().substring(1);
感谢您回答BalusC。如果我试图将一个简单的字符串传递给我的servlet,这将非常有效,但是我想传递整个对象,我认为我不能通过URL来实现。正如我所说,#{cc.attrs.value}是一个列表,我使用您的代码将列表的元素打印在HTML文件中。由于我的列表为空,JSF呈现:url:“/plupload/”+encodeURIComponent(“[]”)。将其转换为字符串。或者通过唯一ID将其存储为会话属性,并传递该ID。将其转换为字符串将不起作用…我不需要变量的副本,我需要对它的引用=/。我尝试了会话的想法,创建了一个新的会话范围的托管Bean,并在我的复合组件中使用预呈现事件加载了它。它起作用了很好,谢谢。我会写一个详细的答案,告诉大家我做了些什么来帮助那些将来可能有类似问题的人。