struts.xml和struts-config.xml有什么区别?它们是相同的还是它们之间有什么区别?
There are few open source projects/APIs/libraries that we use in our project (Spring, Struts, iBatis etc.) and I want to understand their design and how they work internally.
了解这些项目的最佳方法是什么?请注意,我已经在我的项目中使用这些库.我知道这些库的输入输出交互/配置.我不明白的是这些API /库如何在内部工作.
我面临的问题是:
提前致谢!!
更新:我需要一些关于eclipse插件的输入,它可以帮助我获得库的概述/类图
我是Struts2的初学者.请告诉我为什么要延长ActionSupport课程?(当一个人没有验证或国际化的要求时)
延伸ActionSupport课程是否还有其他好处?
我正在使用:Liferay 6.0.6与JBoss 5.1和Struts2.
我的问题是,如何使用Java代码登录Liferay后获取当前用户.
我使用Struts2上传多个文件:
<s:file name="files" multiple="multiple" />
Run Code Online (Sandbox Code Playgroud)
当我选择多个文件时,它会显示文件数量,例如.3个档案.
项目要求是用户应该能够在上传之前查看他选择的文件.
是否可以在列表中或控件本身中显示所选文件名?
我正在制作JQuery Ajax帖子,并希望任何actionmessages,actionerrors并fielderrors在响应中添加到操作中(以JSON格式).
我添加了这个结果:
<result name="input" type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">fieldErrors,actionErrors</param>
</result>
Run Code Online (Sandbox Code Playgroud)
到我的动作配置struts.xml.
我得到了:{"actionErrors":[],"fieldErrors":{}}尽管在值堆栈上存在字段错误,但作为响应返回.
如果我将结果配置更改为:
<result name="input" type="json">
<param name="ignoreHierarchy">false</param>
<param name="root">fieldErrors</param>
</result>
Run Code Online (Sandbox Code Playgroud)
JSON响应是我预期的::
{"thePropertyWithValidationError":["You must supply correct information."]}
如果可能的话,我真的希望响应中包含操作错误和字段错误.
有任何想法吗?非常感谢你提前!!
编辑:
我想我可能需要利用某种正则表达式......我试过:
<result name="input" type="json">
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">fieldErrors\[\d+\],actionErrors\[\d+\]</param>
</result>
Run Code Online (Sandbox Code Playgroud)
结果相同:
{"actionErrors":[],"fieldErrors":{}}
Run Code Online (Sandbox Code Playgroud)
我还发现了这个错误报告,当我使用Struts v2.2.1时,这可能会导致我的问题.(v2.2.2尚未出局)
编辑#2:
也许JSONValidationInterceptor是我需要的......我似乎无法弄清楚如何将它与我的自定义JQuery Ajax帖子一起使用...
我正在使用json拦截器来填充我的属性 - 下面是我的动作配置:
<action name="MyAction" method="add" class="com.test.actions.MyAction">
<interceptor-ref name="json" />
<interceptor-ref name="jsonValidationWorkflowStack"/>
<interceptor-ref name="MyCustomInterceptor" />
<result name="success" type="json" /> …Run Code Online (Sandbox Code Playgroud) 我正在使用Struts2
我得到错误,因为没有为动作和结果输入定义结果
<action name="update" method="updatePhase" class="Project">
<result name="updated">/Project.jsp</result>
</action>
Run Code Online (Sandbox Code Playgroud)
我的动作不是传递给我的java类.
谁能帮我?
我目前正在创建一个Web应用程序,用户可以从数据库中获取标记为JSON,
这是我的struts动作
public String execute(){
Gson gson = new Gson();
String tagsAsJson = gson.toJson(audioTaggingService.findTagsByName(q));
System.out.println(tagsAsJson);
return "success";
}
Run Code Online (Sandbox Code Playgroud)
更新:
在tagsAsJson已经处于JSON格式的所有我想要的是只返回,而不是整个集体诉讼本身.
它返回这样的东西
这是我想要返回给用户的数据
[{"id":2,"name":"Dubstep","description":"Dub wob wob"},{"id":3,"name":"BoysIIMen","description":"A 1990s Boy Band"},{"id":4,"name":"Sylenth1","description":"A VST Plugin for FLStudio "}]
Run Code Online (Sandbox Code Playgroud)
如何返回tagsAsJsonas ar JSON响应?因为JSON响应将由客户端代码使用.
如何抑制FreeMarker模板错误?我在这里看:http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html 但我不明白如何"TemplateExceptionHandler.IGNORE_HANDLER".我正在使用Struts2以及如何显示另一个ftl页面而不是显示堆栈跟踪?
class MyTemplateExceptionHandler implements TemplateExceptionHandler {
public void handleTemplateException(TemplateException te, Environment env, java.io.Writer out)
throws TemplateException {
try {
out.write("[ERROR: " + te.getMessage() + "]");
} catch (IOException e) {
throw new TemplateException("Failed to print error message. Cause: " + e, env);
}
}
}
...
cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
Run Code Online (Sandbox Code Playgroud)
在http://freemarker.sourceforge.net/docs/pgui_config_errorhandling.html上找到了上面的内容 我如何使用它?最后一行,cfg来自哪里?
"进入FreeMarker API的主要入口点"...... http://massapi.com/source/freemarker-2.3.18/src/freemarker/template/Configuration.java.html
所以,这是主要的切入点,我猜cfg来自这个类.我仍然没有看到控制器将如何进入我的类MyTemplateExceptionHandler.
以下行需要去哪里?
cfg.setTemplateExceptionHandler(new MyTemplateExceptionHandler());
Run Code Online (Sandbox Code Playgroud)
这只是将这条线放在正确位置的问题吗?
这是我当前班级的样子:
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.Writer;
import java.util.Properties;
import freemarker.cache.FileTemplateLoader;
import freemarker.cache.MultiTemplateLoader;
import …Run Code Online (Sandbox Code Playgroud) 我们有一个用Java制作的Web应用程序,它使用struts2,spring和JasperReport.此应用程序在glassfish 4.0上运行.
应用程序的库位于WEB-INF/lib文件夹中,并且在glassfish中安装4个以上的库使用相同的库.
Glassfish配置为使用1024mb用于堆空间,512m用于permgen,当我使用每个应用程序的库时,大部分内存消耗在struts操作和spring aop类中(使用netbeans profiler).
我们遇到的问题是每个应用程序在类加载器中使用库所消耗的内存量,因为它很高并且会生成PermGen错误,我们也注意到应用程序运行速度越慢,用户越多.
因为我们尝试使用共享库,将它放在domain1/lib文件夹中,发现使用单个部署的应用程序,加载时间和内存消耗要低得多,并且应用程序通常工作得更快.但是当我们在服务器上部署其余的应用程序时,只有第一个加载的应用程序运行良好,其余的在我们调用struts2动作时出错.我们认为这是因为每个应用程序在struts2和log4j上的设置略有不同.
我们还尝试在glassfish上只放置某些库,并在应用程序中只留下struts2,但它显示了InvocationTargetException错误,因为所有库都依赖于来自apache-common的lib,如果我们将这些lib放在一个地方或另一个地方也没关系.此外,如果我们把它放在两个地方,应用程序不会启动.