我正在尝试使用带有@Controller和@RequestMapping的spring 3.1.2上传多个文件.
这是我做的和我的配置.
Html5表格:
<form action="addFileSystemImage.foo" method="post" enctype="multipart/form-data">
<input class='fileInput' type="file" name="files[]" multiple="multiple" />
<input type="text" value="13asdf12eadsf" name="locId"/>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
控制器方法:
@RequestMapping(value="/publisher/addFileSystemImage.foo", method=RequestMethod.POST)
public @ResponseBody List<UploadedFile> addFileSystemImage(@RequestParam("files[]") ArrayList<MultipartFile> files, String locId, HttpServletRequest request) {
//do lotsa voodoo rocket science here to process the files
}
Run Code Online (Sandbox Code Playgroud)
我的conf:
<mvc:annotation-driven />
<context:component-scan base-package="foo.package"></context:component-scan>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"></bean>
Run Code Online (Sandbox Code Playgroud)
提交表单确实可以访问addFileSystemImage方法.locId参数的数据在此处,但"files"参数未绑定.无论我尝试过什么参数/字段名称/参数类型的组合,它都是系统无效的.
HttpServletRequest参数是org.springframework.web.multipart.support.DefaultMultipartHttpServletRequest,它包含一个实际保存文件数据的multiPartFile属性.看看它在调试中的价值给了我
{files[]=[org.springframework.web.multipart.commons.CommonsMultipartFile@16afd7f9, org.springframework.web.multipart.commons.CommonsMultipartFile@728c2811, org.springframework.web.multipart.commons.CommonsMultipartFile@4f9aaed7]}
Run Code Online (Sandbox Code Playgroud)
这意味着我的文件[]确实在这里......但不知怎的,它没有正确地传递数据绑定步骤...
现在......我知道你会告诉我我可以从请求中检索数据......但我宁愿让它正常工作... Sring方式...... :)并且正确地使用MultipartFile的ArrayList填充.
我错过了什么吗?有没有人真正做好这项工作?如何填充此ArrayList(甚至是常规数组)?
我在这个解决方案中遇到了一个 带有ajax文件上传的Spring MVC和MultipartFile,它与我做的几乎完全相同,但显然我必须做错事,因为这个解决方案对我不起作用.
注意:我确实设法使用单个文件上传.但我今天的挑战是一次获得多个文件.
任何帮助赞赏.
提前致谢.
我试图找出通过使用Stanford Corenlp的Coreference模块"解析"(用其替换单词)来重写句子的方法.
想法是重写一个如下句子:
约翰开车去了朱迪的家.他做了晚饭.
成
约翰开车去了朱迪的家.约翰做了朱迪的晚餐.
这是我一直在愚弄的代码:
private void doTest(String text){
Annotation doc = new Annotation(text);
pipeline.annotate(doc);
Map<Integer, CorefChain> corefs = doc.get(CorefChainAnnotation.class);
List<CoreMap> sentences = doc.get(CoreAnnotations.SentencesAnnotation.class);
List<String> resolved = new ArrayList<String>();
for (CoreMap sentence : sentences) {
List<CoreLabel> tokens = sentence.get(CoreAnnotations.TokensAnnotation.class);
for (CoreLabel token : tokens) {
Integer corefClustId= token.get(CorefCoreAnnotations.CorefClusterIdAnnotation.class);
System.out.println(token.word() + " --> corefClusterID = " + corefClustId);
CorefChain chain = corefs.get(corefClustId);
System.out.println("matched chain = " + chain);
if(chain==null){
resolved.add(token.word());
}else{
int sentINdx = chain.getRepresentativeMention().sentNum -1;
CoreMap corefSentence = …Run Code Online (Sandbox Code Playgroud) 在我的mongoDB书籍集中,我的文档结构如下:
/* 0 */
{
"_id" : ObjectId("50485b89b30f1ea69110ff4c"),
"publisher" : {
"$ref" : "boohya",
"$id" : "foo"
},
"displayName" : "Paris Nightlife",
"catalogDescription" : "Some desc goes here",
"languageCode" : "en",
"rating" : 0,
"status" : "LIVE",
"thumbnailId" : ObjectId("50485b89b30f1ea69110ff4b"),
"indexTokens" : ["Nightlife", "Paris"]
}
Run Code Online (Sandbox Code Playgroud)
我执行以下正则表达式查询以查找具有以"Par"开头的一个indexToken的所有文档:
{ "indexTokens" : { "$regex" : "^Par" , "$options" : "i"}}
Run Code Online (Sandbox Code Playgroud)
如果我只选择要返回的indexTokens字段,如下所示:
{ "indexTokens" : 1}
Run Code Online (Sandbox Code Playgroud)
生成的DBObject是
{ "_id" : { "$oid" : "50485b89b30f1ea69110ff4c"} , "indexTokens" : [ "Nightlife" , "Paris"]}
Run Code Online (Sandbox Code Playgroud)
我想得到的只是与正则表达式匹配的标记/标记(此时我不关心检索文档,我也不需要匹配文档的所有标记)
这是MongoDB v2.2下新的聚合框架的案例吗?? …
在Java中,我有一个如下所示的对象:
class MyDoc {
ObjectId docId;
Map<String, String> someProps = new HashMap<String,String>();
}
Run Code Online (Sandbox Code Playgroud)
当持久化到MongoDB时会生成以下文档:
{
"_id" : ObjectId("4fb538eb5e9e7b17b211d5d3"),
"someProps" : {
"4fda4993eb14ea4a4a149c04" : "PROCESSED",
"4f56a5c4b6f621f092b00525" : "PROCESSED",
"4fd95a2a0baaefd1837fe504" : "TODO"
}
}
Run Code Online (Sandbox Code Playgroud)
我需要查询如下.
DBObject queryObj =
new BasicDBObject("someProps.4fda4993eb14ea4a4a149c04","PROCESSED");
DBObject explain =
getCollection().find(queryObj).hint("props_indx").explain();
Run Code Online (Sandbox Code Playgroud)
应该读取找到MyDoc文件,其中有一些带有键"4fda4993eb14ea4a4a149c04"的someProps,值为"Processed"
我在集合中存储了数百万个MyDoc文档,因此我需要对someProps嵌入对象的键进行有效索引.
事先不知道地图的键(它们是动态生成的,它们不是一组固定的键)所以我不能为每个someProps键创建一个索引.(至少我认为如果我错了我不能纠正我)
我试图直接在someProps上创建索引,但查询需要很长时间.
如何在someProps Map键上进行索引?我需要不同的文档结构吗?
重要的笔记:
1.someProps中只有一个元素具有相同的键.例如 :
{
"_id" : ObjectId("4fb538eb5e9e7b17b211d5d3"),
"someProps" : {
"4fda4993eb14ea4a4a149c04" : "PROCESSED",
"4f56a5c4b6f621f092b00525" : "PROCESSED",
"4f56a5c4b6f621f092b00525" : "TODO"
}
}
Run Code Online (Sandbox Code Playgroud)
因为4f56a5c4b6f621f092b00525在地图中找不到两次(因此首先使用地图)会无效
2.我还需要有效地更新someProps,只更改值(例如:将"4fda4993eb14ea4a4a149c04":"PROCESSED"更改为"4fda4993eb14ea4a4a149c04":"CANCELED")
我有什么选择?
谢谢.
我试图从ajax发送HashMap或任何其他Map实现到Spring MVC控制器
这是我如何做的细节:
Ajax调用如下
var tags = {};
tags["foo"] = "bar";
tags["whee"] = "whizzz";
$.post("doTestMap.do", {"tags" : tags }, function(data, textStatus, jqXHR) {
if (textStatus == 'success') {
//handle success
console.log("doTest returned " + data);
} else {
console.err("doTest returned " + data);
}
});
Run Code Online (Sandbox Code Playgroud)
那么在控制器方面我有:
@RequestMapping(value="/publisher/doTestMap.do", method=RequestMethod.POST)
public @ResponseBody String doTestMap(@RequestParam(value = "tags", defaultValue = "") HashMap<String,String> tags, HttpServletRequest request) { //
System.out.println(tags);
return "cool";
}
Run Code Online (Sandbox Code Playgroud)
不幸的是我系统地得到了
org.springframework.beans.ConversionNotSupportedException: Failed to convert value of type 'java.lang.String' to required type 'java.util.Map'; …Run Code Online (Sandbox Code Playgroud) 我想知道是否可以在不同的eclipse项目中分离我的javascript库,然后将它们导入到另一个动态web项目中,就像我通常对常规java子项目那样?
这个答案:将Eclipse项目与Eclipse中的Java项目链接起来 就是我想要做的事情但是我真的不喜欢这个答案......我宁愿链接到工作区项目而不是直接依赖于FileSystem.
似乎JSDT(http://www.eclipse.org/webtools/jsdt/)"向Eclipse Workbench添加了一个JavaScript项目类型和透视图",但是如何在java项目中使用/ import/link这些JS项目?
谢谢你的帮助.
我正在开发的java Web应用程序允许用户将文件(图片和文档)上传到他们的配置文件,并定义这些文件的访问规则(定义哪些其他用户能够查看/下载文件).访问控制/权限系统是定制的,规则存储在mongoDB中,与用户的配置文件和实际文件条目一起存储.
知道我需要分布式应用程序和存储以及容错,我需要弄清楚哪个是文件存储的最佳策略.
我应该将mongoDB中的文件存储在包含描述和访问规则的文件文件所在的文件集合中吗?
或者我应该将文件存储在服务器的文件系统中并保留mongoDB文档中的路径?使用文件系统方法,我仍然可以强制执行用户定义的访问权限以及如何执行?最后在文件系统方法中如何在服务器之间分发文件?我应该使用专用服务器还是可以将文件存储在webapp服务器或mongodb服务器上?
非常感谢您的所有见解!任何帮助或反馈意见.
亚历克斯
filesystems permissions file-permissions file-storage mongodb
我正在使用stanford CoreNLP来尝试找到名词短语的语法关系.
这是一个例子:
鉴于句子"健身房很脏".
我设法将"健身房"识别为我的目标名词短语.我现在正在寻找一种方法来发现"脏"的形容词与"健身室"有关系,而不仅仅是 "房间".
示例代码:
private static void doSentenceTest(){
Properties props = new Properties();
props.put("annotators","tokenize, ssplit, pos, lemma, ner, parse, dcoref");
StanfordCoreNLP stanford = new StanfordCoreNLP(props);
TregexPattern npPattern = TregexPattern.compile("@NP");
String text = "The fitness room was dirty.";
// create an empty Annotation just with the given text
Annotation document = new Annotation(text);
// run all Annotators on this text
stanford.annotate(document);
List<CoreMap> sentences = document.get(CoreAnnotations.SentencesAnnotation.class);
for (CoreMap sentence : sentences) {
Tree sentenceTree = sentence.get(TreeCoreAnnotations.TreeAnnotation.class);
TregexMatcher matcher …Run Code Online (Sandbox Code Playgroud) 我有一个ViewPager,其中的页面包含ListViews.一切正常,我的viewPAger和ListViews按预期工作:可以在页面之间滑动,列表视图可以按原样垂直滚动.
现在我想添加一个PageTransformer来平滑分页anbd我使用了谷歌文档中提供的ZoomOutPageTransformer.
现在我在视图之间滑动时有一个很好的动画但是列表不再可滚动了.
这是代码:
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
LayoutInflater inflater = LayoutInflater.from(getActivity());
viewPager = (ViewPager) view.findViewById(R.id.bookMenuPager);
viewPager.setPageTransformer(false, new ZoomOutPageTransformer());
pagerAdapter = new MenuPagerAdapter();
viewPager.setAdapter(pagerAdapter);
}
class MenuPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
return 3; //change this as needed
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view.equals( o );
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(position == 0){
if(!rootMenuAdded){
viewPager.addView(rootMenucont, …Run Code Online (Sandbox Code Playgroud) 我仍然在玩斯坦福大学的CoreNLP,我在Coreference分辨率的非常简单的测试中遇到了奇怪的结果.
给出两句话:
酒店有一个大浴室.这很干净.
我希望句子2中的"It"可以被句子1的"浴室"或至少"大浴室"所共处.
不幸的是,它指向"酒店",在我看来是错误的.
有没有办法解决这个问题?我需要训练任何东西,还是应该开箱即用?
Annotation a = getPipeline().getAnnotation("The hotel had a big bathroom. It was very clean.");
System.out.println(a.get(CorefChainAnnotation.class));
Run Code Online (Sandbox Code Playgroud)
输出:
{1 = CHAIN1 - [句子1中的"酒店",句子2中的"它"],2 = CHAIN2 - [句子1中的"大浴室"]}
非常感谢您的帮助.
java ×3
mongodb ×3
nlp ×3
stanford-nlp ×3
spring ×2
ajax ×1
android ×1
eclipse ×1
file-storage ×1
file-upload ×1
filesystems ×1
html5 ×1
javascript ×1
json ×1
permissions ×1
spring-mvc ×1