actionresult 相关问题

Struts 2 Action类方法完成时返回的值。

在 Struts 2 中使用调度程序结果时未收到操作错误

当我在 Struts 2 中使用调度程序结果时,我没有收到操作错误。 在操作类中,以下代码用于添加错误消息。 添加操作错误(“错误”); 返回“失败&q...

回答 2 投票 0

返回 Struts 2 中输入结果的当前页面

我的网络应用程序的所有页面上都有一个 。 我的网络应用程序的所有页面上都有一个 <s:form>。 <s:form action="search" method="post"> <s:textfield name="query" placeholder="Enter movie title..." cssClass="searchbox" /> <s:submit type="image" src="images/btn_search.gif" /> </s:form> 目前,当index.jsp类的validate()方法结果为SearchAction时,会重定向到input。 <action name="search" class="com.mypackage.action.SearchAction"> <result>/search-result.jsp</result> <result name="input">/index.jsp</result> </action> 搜索操作: public class SearchAction extends ActionSupport implements RequestAware, Message { private static final long serialVersionUID = 1L; private Map<String, Object> request; private String query; @Override public String execute() throws Exception { // business logic request.put("searchResults", searchResults); return SUCCESS; } @Override public void validate() { if(getQuery().length() == 0) { addFieldError("query", BLANK_SEARCH); } } @Override public void setRequest(Map<String, Object> request) { this.request = request; } public String getQuery() { return query; } public void setQuery(String query) { this.query = query; } } 输出: 它可以工作,但每次参数无效(即空白)时,用户返回到index.jsp似乎不自然。 我的目标是当出现 请输入... 消息时让用户保持在当前页面。 问题: 如何获取调用操作的当前页面? (例如,访问者在登录页面使用了搜索,我该如何 从地址栏获取 login.jsp?) 如何使当前页面位于 <result name="input">/currentpage</result>? 您可以使用以下代码获取当前页面名称: String actionName = ServletActionContext.getRequest().getHeader("Referer"); 在 Struts.xml 中,使用动态结果,例如: <result name="input" type="redirect">${url}</result> 在action中,对url使用getter方法。默认情况下将 url 的值设置为“index.jsp”。如果要更改它,请为 url 设置适当的值。比如login.jsp等 您可以通过servlet请求获取当前页面。创建拦截器来拦截当前页面 public class CurrentPageInterceptor extends AbstractInterceptor { @Override public String intercept(ActionInvocation actionInvocation) throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); Map<String, Object> session = actionInvocation.getInvocationContext().getSession(); String queryString = request.getQueryString(); String savedUrl = request.getRequestURI()+(queryString==null?"":("?"+queryString)); String currentPage = (String) session.get("savedUrl"); if(currentPage == null) currentPage = savedUrl; session.put("currentPage", currentPage); session.put("savedUrl", savedUrl); return actionInvocation.invoke(); } } 在父包中注册拦截器 <interceptors> <interceptor name="currentPage" class="com.company.interceptor.CurrentPageInterceptor"/> <interceptor-stack name="curentPageStack"> <interceptor-ref name="currentPage"/> <interceptor-ref name="defaultStack"/> </interceptor-stack> </interceptors> <default-interceptor-ref name="curentPageStack"/> 添加结果返回动态参数 @Results({ @Result(name = "input", type = "redirect", location = "${currentPage}"), @Result(location= "/search-result.jsp") }) public class SearchAction extends ActionSupport implements RequestAware, SessionAware, Message { private String currentPage; //getter @Override public String execute() throws Exception { if (hasErrors()){ currentPage = (String) session.get("currentPage"); return "input"; } // business logic request.put("searchResults", searchResults); return SUCCESS; } ... } 这只是为了展示我如何使用 Jigar's 方法来解决该问题,我将其标记为已接受的答案。 struts.xml: <action name="search" class="com.mypackage.action.SearchAction"> <result>/search-result.jsp</result> <result name="input">${url}</result> </action> 我删除了type="redirect",因为字段错误消息消失了。我相信这是 Apache 文档中记录的预期行为: 重定向结果 响应被告知将浏览器重定向到指定位置 (来自客户的新请求)。这样做的后果意味着 操作(操作实例、操作错误、字段错误等) 刚刚执行的文件丢失并且不再可用。 资料来源:http://struts.apache.org/release/2.1.x/docs/redirect-result.html 搜索操作: public class SearchAction extends ActionSupport implements RequestAware, Message { private String url; public String getUrl() { return url; } @Override public String execute() throws Exception { // business logic request.put("searchResults", searchResults); return SUCCESS; } @Override public void validate() { url = ServletActionContext.getRequest().getHeader("referer") .replace("http://localhost:8080/mysite/", ""); // get resource name only if(!url.contains(".jsp")) { url = "index.jsp"; // default page } if(searchWord.length() == 0) { addFieldError("searchWord", BLANK_SEARCH); } } } 输出: 现在出现错误时停留在当前页面。

回答 3 投票 0

在Struts 2中使用重定向结果类型时发生404错误

我是Struts 2的初学者,我正在遵循tutorialspoint提供的教程。目前我正在测试提供的代码:Struts 2 - Redirect Action。 然而,当我点击“说

回答 1 投票 0

LazyInitializationException:无法延迟初始化角色集合,没有会话或会话被关闭,在 Struts 2 中使用 JSON 结果

当我在浏览器中执行结果时,出现 JSON 异常,如下所示: 类型异常报告 信息 描述 服务器遇到内部错误 (),导致...

回答 1 投票 0

struts.xml命名空间导致404未找到页面

我在Struts 2 Web项目的struts.xml上遇到问题。 我有登录页面,登录后,URL 将添加 /secure/*.action。 我尝试在 struts.xml 中有两个包。一个是正常的/而且是...

回答 1 投票 0

ognl.NoSuchPropertyException:org.apache.struts2.dispatcher.ServletActionRedirectResult.applicationId

我正在使用 Hibernate 3.0 和 Struts 2。我正在使用 @GenerateValue 来生成 id。 当我保存客户详细信息时,我有一个客户屏幕,我想移动到下一个屏幕 新

回答 2 投票 0

在Hibernate中获取插入的id是否有更好的方法?

我正在使用 Hibernate 3.0 和 Struts 2。我正在使用 @GenerateValue 来生成 id。 当我保存客户详细信息时,我有一个客户屏幕,我想移动到下一个屏幕 新

回答 2 投票 0

如何获取controller中action属性的route值?

如何获取控制器中的动作路由值?喜欢: [路线(“示例页面”)] 公共 ActionResult MyAction() { //我想在这里使用“示例页面” } 我尝试过这样的,&...

回答 1 投票 0

无法使用操作链结果类型重定向到另一个 URL 并传递参数

尝试使用传递参数重定向到外部 URL。 我的代码如下: 尝试使用 pass 参数重定向到外部 URL。 我的代码如下: <action name="testit" class="TestAction" method="test"> <result name = "success" type = "chain"> <param name="location">${at.url}</param> <param name="login">${at.login}</param> <param name="pass">${at.pass}</param> </result> </action> action类中的方法是: public String test(){ at.setUrl("http://www.test.com"); at.setLogin("ssfd"); at.setPass("ssfd"); } 我面临以下错误: Info: 2017-11-29 15:23:39 ERROR Dispatcher:38 - Exception occurred during processing request: null java.lang.NullPointerException at com.opensymphony.xwork2.util.OgnlTextParser.evaluate(OgnlTextParser.java:22) at com.opensymphony.xwork2.util.TextParseUtil.translateVariables(TextParseUtil.java:170) at com.opensymphony.xwork2.util.TextParseUtil.translateVariables(TextParseUtil.java:127) at com.opensymphony.xwork2.util.TextParseUtil.translateVariables(TextParseUtil.java:49) at com.opensymphony.xwork2.ActionChainResult.execute(ActionChainResult.java:207) at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:371) 如何解决这个问题? chain结果类型不会重定向。而是使用 redirect 结果类型。 <action name="testit" class="TestAction" method="test"> <result name = "success" type = "redirect"> <param name="location">${at.url}</param> <param name="login">${at.login}</param> <param name="pass">${at.pass}</param> </result> </action>

回答 1 投票 0

Struts 2 中某些 Struts 1 方法的替代方案

我写了一些在Struts 2中实现Struts 1功能的方法 Struts 1 ActionForward: new ActionForward("/home/ShowPage.do?page=edit",true); 我在 Struts 2 中也做了同样的事情: 公共字符串

回答 1 投票 0

使用 Struts 2 调度程序结果时操作错误为空

当我在 Struts 2 中使用调度程序结果时,我没有收到操作错误。 在操作类中,以下代码用于添加错误消息。 添加操作错误(“错误”); 返回“失败&qu...

回答 2 投票 0

我一直遇到 AMPL 错误,每当我尝试对 mod 文件建模时,都会收到错误:d 未定义

我一直遇到 AMPL 错误,每当我尝试对 mod 文件建模时,都会收到错误:giap.mod,第 23 行(偏移 1996):d 未定义 上下文:{(d,b)>>>:<<<...

回答 1 投票 0

用actionResult返回错误信息

MVC应用程序,客户端向服务器发出请求,发生错误,想要将消息发送回客户端。 尝试了 HttpStatusCodeResult 但只返回 404,没有任何消息,我需要错误的详细信息...

回答 6 投票 0

.net 8 中是否有 FailureResult.FailureResult(Sytem.Net.HttpStatusCode statusCode, IServiceError serviceError) 的良好替代品?

在从 .net Framework 4.8 升级到 .net 8 期间,我正在努力从 IhttpActionResult 过渡到 IActionResult,并且我 protected IActionResult InvalidParameter(字符串参数名称) {...

回答 1 投票 0

Struts 2 Web 应用程序中的 HTTP 状态 404 和结果 JSP

这是我的设置: 眼镜: 雄猫7.0.109 jdk1.8.0_11 IDEA20232.5 当我输入此操作的“test5_5”方法时,它将重定向到 404 页面。 if(NumberUtils.notNullEquals(结果.getRes...

回答 1 投票 0

为什么我收到错误:没有为操作 [] 和结果输入定义结果?

这是我的 Struts 文件,我在其中映射了所有操作文件 struts.xml: 这是我的 Struts 文件,我在其中映射了所有操作文件 struts.xml: <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <package name="default" extends="struts-default"> <action name="AddTaskAction" class="actions.AddTaskAction" method="post"> <result name="success">/success.jsp</result> <result name="error">/error.jsp</result> </action> <action name="UpdateTaskAction" class="actions.UpdateTaskAction" method="post"> <result name="success">/displayTask.jsp</result> <result name="error">/error.jsp</result> </action> <action name="DeleteTaskAction" class="actions.DeleteTaskAction" method="post"> <result name="success">/displayTask.jsp</result> <result name="error">/error.jsp</result> </action> </package> </struts> 这是Action类文件,我在这里写了关于使用Hibernate的事务、会话将数据插入数据库的内容 AddTaskAction.java: package actions; import org.hibernate.Session; import org.hibernate.Transaction; import com.opensymphony.xwork2.ActionSupport; import helper.FactoryProvider; import model.Task; public class AddTaskAction extends ActionSupport { private Task t = new Task(); public String post() { Session session = FactoryProvider.getFactory().openSession(); Transaction tx = null; try { tx = session.beginTransaction(); session.persist(t); tx.commit(); addActionMessage("Task added successfully!"); return SUCCESS; } catch (Exception e) { if (tx != null && tx.isActive()) { tx.rollback(); } addActionError("Error adding task: " + e.getMessage()); return ERROR; } finally { session.close(); } } public Task getT() { return t; } public void setT(Task t) { this.t = t; } } 在下面的 JSP 页面中,我编写了一段代码来从用户那里获取数据,它将数据重定向到我的操作文件中以插入到数据库中 addTask.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Add Task</title> </head> <body> <div class="form-container"> <form action="AddTaskAction" method="post"> <div class="form-element"> <label for="name" class="form-label">Task Name</label> <input type="text" id="name" name="t.name" required> </div> <div class="form-element"> <label for="description" class="form-label">Description</label> <input type="text" id="description" name="t.description" required> </div> <div class="form-element"> <label for="due_date" class="form-label">Due Date</label> <input type="text" id="due_date" name="t.due_date" required> </div> <div class="form-element"> <label for="level" class="form-label">Priority Level</label> <input type="text" id="level" name="t.level" required> </div> <div class="form-element"> <label for="status" class="form-label">Status</label> <input type="text" id="status" name="t.status" > </div> <div class="form-submit"> <button type="submit">ADD</button> </div> </form> </div> </body> </html> 我正在尝试使用 Struts2 将数据插入数据库,但结果我经常遇到上述错误 应该配置INPUT结果。 <action name="AddTaskAction" class="actions.AddTaskAction" method="post"> <result name="success">/success.jsp</result> <result name="input">/addTask.jsp</result> <result name="error">/error.jsp</result> </action> 如果您的操作有错误,INPUT结果将由workflow拦截器返回。在执行操作之前,堆栈中的拦截器可能会遇到这些错误。例如,执行验证时可能会出现验证错误,因为堆栈上有一个 validation 拦截器。

回答 1 投票 0

Struts 响应原始字符串

我有一个 Struts 项目,我需要将响应作为原始字符串发送 struts.xml: <

回答 1 投票 0

可以在浏览器中预览 XLSX 或 XLS 吗?

我有一个下载文件的 MVC ActionResult 控制器。 如果是PDF则使用这个JS代码 var $obj = $(''); $obj.attr("类型", "应用程序/pdf"); $obj.attr("数据", myurl); ... 我有一个下载文件的 MVC ActionResult 控制器。 如果是PDF则使用这个JS代码 var $obj = $('<object>'); $obj.attr("type", "application/pdf"); $obj.attr("data", myurl); $("#id").append($obj); 然后我可以在我的应用程序中预览 PDF。 我想要 XLSX 或 XLS 文件类似的东西。 如果我点击网址,我会得到文件,但无法显示它。 我尝试过 <iframe src="https://docs.google.com/gview?url=myurl"></iframe> 但不起作用。 有什么想法吗? 我知道已经是 4 年前了,作者可能不再需要它了,但我也有类似的需求。我生成 xls 报告,每次我需要下载文件并打开它。我没有找到在浏览器中预览文件的方法,但我编写了一个小脚本,用于监视下载目录中的新 xls 文件并关闭 LibreOffice Calc 并使用新文件打开它。 虽然不是很微妙,但很有效 https://gist.github.com/tiriana/6f9b8fa7861592e3ac0c2271de502f46#file-watch_and_open-sh

回答 1 投票 0

对象类型在 .net 6 中显示为空数组

我正在从 .netcore 2.1 迁移到 .net 6。我有一个返回类型为 Task 的端点,我有一个具有对象类型属性的类。 经过一些检查后,我返回了一个好的结果......

回答 1 投票 0

如何在ASP.NET Core中获取ActionResult StatusCode

我有一个API,其返回类型是ActionResult: [HttpPost("上传文件")] 公共异步任务 MyFunction(MyFunctionInput 输入) { if (input.Id == null) { ...

回答 4 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.