Tag: struts2

Struts2 URL中“.action”扩展重要性的解释

这可能是一个无用或蹩脚的问题,但请解释我这个。 在struts2中,当我们将一个动作分配给一个表单按钮并单击该按钮时,将调用该动作。 现在,当显示操作文件的结果时,浏览器中的URL显示 localhost:8080/HelloWorld/ClassName.action 有时默认情况下.action部分不显示。 但两者的作用相同。 我需要向某人解释这个.action 。 为什么扩展名显示在URL中,是否有一些特定的东西可以启用和禁用Struts2 URL中的.action ?

如何在struts2中禁止缓存?

在我的Web应用程序中,当用户注销时,他不应该访问他以前在登录时查看的页面。但是,由于浏览器缓存,他可以在单击后退按钮时查看这些页面。 我定义了一个Interceptor来处理这个: public String intercept(ActionInvocation invocation) throws Exception { // TODO Auto-generated method stub final ActionContext context = invocation.getInvocationContext(); HttpServletResponse response = (HttpServletResponse)context.get(StrutsStatics.HTTP_RESPONSE); if(response!=null){ response.setHeader(“Cache-control”, “no-cache, no-store”); response.setHeader(“Pragme”, “no-cache”); response.setHeader(“Expires”, “-1”); } return invocation.invoke(); } 在struts.xml : 添加此内容后,我运行应用程序时出现404错误。 我尝试在页面中添加响应标头: 但是,必须逐个将它添加到所有页面,这将是乏味的。 此外,用户可以始终重新提交表单,并且无需实际输入登录凭据即可再次访问这些页面。 理想情况下,我应该做些什么来阻止浏览器缓存?

需要检查用户ID存在与struts 2

我正在使用struts 2框架并试图查看在数据库中检查用户ID存在的最佳方法。 在我的上一个项目中,我用jquery ajax做了这个,但对它不满意。 在这个项目中,我使用validation框架对客户端的输入字段和jquery validate插件进行服务器端检查。 我有一个DAO类,它调用DB来检查是否存在,我不想使用jquery ajax但是更喜欢使用struts 2validation框架。 他们是否可以使用我的DAO类输出并使用字段表达式或使用validate方法将其与我的validationxml结合使用? 如果我使用validation方法? 与执行动作类相比,此方法的执行顺序是什么? 我想要这种格式的订单,首先我做客户端validation,然后是服务器端validation,然后只有服务器端完成,我需要启动检查用户ID是否存在然后最后插入数据库? 我的字段操作validation文件如下所示, Email is required Please enter valid email id 现在我需要检查db中是否存在电子邮件,因此我有DAO类返回true或false,如何从dao类添加validation?

struts.convention.result.path在Struts2中不起作用

我目前的项目结构如下 WebContent WEB-INF View TestPage.jsp other JSP pages… 我的任务是将所有JSP页面放在WEB-INF文件夹中,并在项目中进行所有相关更改。 WebContent WEB-INF View TestPage.jsp other JSP pages… 所以我必须更新struts.xml中的所有结果标记 /View/TestPage.jsp 至 /WEB_INF/View/TestPage.jsp 在网上搜索之后,我找到了一个插件 – struts convention插件来实现这一点,但它遵循它的命名约定。 我可以覆盖Struts约定插件配置(不遵循其命名约定)吗?我也尝试过,但它没有反映。 我的struts.xml是 /TestPage.jsp 当我跑 localhost:8080/project-name/hello1 它显示错误404.但是如果我在struts.xml中更改结果为 /WEB-INF/View/TestPage.jsp 它工作正常。 我不想对所有结果标签进行更改。如何通过在一个地方进行更改来实现此目的?

Freemarker和Struts 2,有时候它会计算为序列+ extended_hash

首先让我说使用Struts2 + Freemarker是一个真正的爆炸。 但是有些东西让我发疯,因为我无法理解为什么会这样。 我在这里问,也许其他人有想法分享它。 我有一个行动,有财产。 说 private String myText; 然后我有一个二传手和一个吸气剂: public void setMyText(String myText) { this.myText = myText; } public String getMyText() { if (myText == null) myText = “(empty)”; return this.myText; } 结果(在struts.xml中)是一个freemarker结果。 所以在我的Freemarker模板中有一行如下: The text is: ${myText} 现在考虑我正在调用没有任何文本参数的动作:说url是 http:localhost:8080/myapp/myaction 由于getter提供了一个默认值,当处理动作并将结果传递给我的模板时,该属性被设置为默认值; 所以我得到(浏览器端的HTML) The text is: (empty) 如果我用参数集调用我的动作,而不是(我的意思是: http:localhost:8080/myapp/myaction?myText=hallo )事情出错了。 Freemarker触发以下exception: Exception occurred during […]

Struts2filterexception问题

目前在一个简单的Web应用程序上工作,我不能让我的Struts项目工作,因为: SEVERE: Exception starting filter struts2 java.lang.InstantiationError: com.opensymphony.xwork2.util.finder.ClassFinder at org.apache.struts2.convention.PackageBasedActionConfigBuilder.findActions(PackageBasedActionConfigBuilder.java:390) at org.apache.struts2.convention.PackageBasedActionConfigBuilder.buildActionConfigs(PackageBasedActionConfigBuilder.java:347) at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53) at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:274) at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67) at org.apache.struts2.dispatcher.Dispatcher.getContainer(Dispatcher.java:970) at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:438) at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:482) at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57) at org.apache.catalina.core.ApplicationFilterConfig.initFilter(ApplicationFilterConfig.java:279) at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:260) at org.apache.catalina.core.ApplicationFilterConfig.(ApplicationFilterConfig.java:105) at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:4659) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5281) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1408) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1398) at java.util.concurrent.FutureTask.run(Unknown Source) at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) at java.lang.Thread.run(Unknown […]

从execute()方法中的列表中检索值

我想要显示的项目列表以及每个都有一个空白文本字段来填充我的JSP页面上的金额,一旦我填写了所需的项目金额,我将提交。 我有如下的ExampleAction类,其中我有populate()方法,我首先触发,以便填充项目。 我点火了: http://localhost:8084/WebExample/populate.action. 相同的ExampleAction执行mtd,我从JSP页面调用SUBMIT按钮操作。 但我的问题是在执行方法,我无法获取列表中的对象,即exList。 这是因为动作类的实例只与一个请求相关联吗? 当我通过SUBMIT按钮触发另一个动作时,有不同的值堆栈关联? 如果是,那么我应该以最好的方式检索输入的那些金额(在JSP中),在execute()方法中在Tomcat的控制台中打印? ExampleAction: private ArrayList exList; private EX ex; public ExampleAction(){ exList = new ArrayList(); } //Getters And Setters. @Override public String execute() throws Exception { for (EX ex1 : exList) { System.out.println(“ex1 = ” + ex1.getName()); } return SUCCESS; } public String populate() throws Exception{ System.out.println(“in populate”); […]

Struts2排除模式不起作用

我正在使用基于GAE的应用程序的struts2。 我有一个servlet来上传这样的文件 – @Override protected void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { try{ ServletFileUpload upload = new ServletFileUpload(); FileItemIterator it = upload.getItemIterator(req); while (it.hasNext()){ FileItemStream item = it.next(); if(item.isFormField()){ System.out.println(item.getFieldName()); }else { System.out.println(item.getFieldName()+” : “+item.getName()); } } }catch (Exception e){ } } 在我的struts.xml中,我添加了exclude pattern,如下所示 这是我的web.xml的片段 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter actionPackages com.tutorial.action struts2 /* REQUEST FORWARD […]

没有使用log4j配置

我的log4j记录器不想使用log4j.xml文件进行配置。 此文件位于src文件夹中,如下所示: 但是logfile.log仍为空,控制台中没有“DEBUG”行。 注意:它是JBoss 7.1.0上的Java EE项目并使用Struts2。

如何在Struts 2中使用JSP返回JSON结果

我知道在Struts2中可以使用json插件来返回json类型的结果。 也可以像在这个答案中那样从stream结果中返回一个json 。 在使用JSP的Ajax结果的Struts2 docs页面上,我发现可以使用输出JSON的JSP返回dispatcher类型结果。 但它正在使用scriptlet将JSON写入out。 我知道在JSP中使用scriplet非常气馁。 但我在这个问题中找不到我的问题的答案如何避免JSP文件中的Java代码? 。 如何使用JSP结果生成JSON对象? 有没有更好的方法从JSP返回JSON对象?