Struts 2 Action类方法完成时返回的值。
在 Struts 2 中没有为操作 <class> 和结果“输入”定义结果
这是我的struts.xml: 这是我的struts.xml: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result type="json" /> </action> </package> 当我打电话给loadcity.action时,我收到以下错误 没有为操作 Roseindia.action.user.RegisterUser 和结果输入定义结果 这是我的行动方法: public String loadcity() { country=request.getParameter("country"); cityList= dao.loadcity(country); return ActionSupport.SUCCESS; } 首先,您的 srtuts.xml 文件并未完全定义应该在操作执行的响应上呈现的结果类型。result 标签在 Struts2 MVC 框架中扮演着视图的角色。操作负责执行业务逻辑。执行业务逻辑后的下一步是使用标签显示视图。 在这里你可以做一件事 <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 如果您的操作有错误,INPUT结果将由workflow拦截器返回。在执行您的操作之前,堆栈中的拦截器可能会遇到这些错误。例如,执行验证时可能会出现验证错误,因为堆栈上有一个 validation 拦截器。 您应该将 INPUT 结果添加到操作配置中。如果您发出 Ajax 请求并期望 JSON 响应,那么您可以返回 INPUT 类型的 "json" 结果,您可以在其中添加错误和消息。您还可以调整状态代码。 您的 XML 节点 result 应具有属性 name,其值为 "input",因为这就是您要返回的内容。 所以你的 struts.xml 应该是这样的: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 编辑: 另一个错误可能是: 您收到验证或类型转换异常,因此看起来 对于“输入”结果。 修复验证/类型转换异常。 来源:struts 2 json插件抛出错误,未定义结果类型
这是我的struts.xml: 这是我的struts.xml: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result type="json" /> </action> </package> 当我打电话给loadcity.action时,我收到以下错误 没有为操作 Roseindia.action.user.RegisterUser 和结果输入定义结果 这是我的行动方法: public String loadcity() { country=request.getParameter("country"); cityList= dao.loadcity(country); return ActionSupport.SUCCESS; } 首先,您的 srtuts.xml 文件并未完全定义应在操作执行的响应上呈现的结果类型。result 标签在 Struts2 MVC 框架中扮演视图的角色。操作负责执行业务逻辑。执行业务逻辑后的下一步是使用标签显示视图。 在这里你可以做一件事 <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 如果您的操作有错误,INPUT结果将由workflow拦截器返回。在执行您的操作之前,堆栈中的拦截器可能会遇到这些错误。例如,执行验证时可能会出现验证错误,因为堆栈上有一个 validation 拦截器。 您应该将 INPUT 结果添加到操作配置中。如果您发出 Ajax 请求并期望 JSON 响应,那么您可以返回 INPUT 类型的 "json" 结果,您可以在其中添加错误和消息。您还可以调整状态代码。 您的 XML 节点 result 应具有属性 name,其值为 "input",因为这就是您要返回的内容。 所以你的 struts.xml 应该是这样的: <package name="ajax" extends="json-default" > <action name="loadcity" method="loadcity" class="roseindia.action.user.RegisterUser" > <result name="input" type="json" /> </action> </package> 编辑: 另一个错误可能是: 您收到验证或类型转换异常,因此看起来 对于“输入”结果。 修复验证/类型转换异常。 来源:struts 2 json插件抛出错误,未定义结果类型
我正在尝试使用 getJSON() jQuery 方法从 Java 服务器获取响应文本。虽然,当 Java 类具有简单格式(字符串、列表和映射)时,我可以获取响应数据,但我无法获取
如何将参数作为查询字符串添加到 Struts 2 中的重定向操作结果?
我正在将应用程序从 Struts 1 迁移到 Struts 2。我这里有一个用例。 Struts 1 操作在 URL 中添加一个查询字符串,如下所示: 公共字符串execute()抛出异常{ .....一些...
Struts 2 中如何拦截一个动作并根据给定的动作结果类型返回结果?
我有具有不同(HTML 和 JSON)结果类型的 Struts 2 操作。他们使用共同的拦截器。 如果需要拦截请求,如何根据给定的操作结果类型返回结果? 对于e...
当我在 Struts 2 中使用调度程序结果时,我没有收到操作错误。 在操作类中,以下代码用于添加错误消息。 添加操作错误(“错误”); 返回“失败&q...
我的网络应用程序的所有页面上都有一个 。 我的网络应用程序的所有页面上都有一个 <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); } } } 输出: 现在出现错误时停留在当前页面。
我是Struts 2的初学者,我正在遵循tutorialspoint提供的教程。目前我正在测试提供的代码:Struts 2 - Redirect Action。 然而,当我点击“说
LazyInitializationException:无法延迟初始化角色集合,没有会话或会话被关闭,在 Struts 2 中使用 JSON 结果
当我在浏览器中执行结果时,出现 JSON 异常,如下所示: 类型异常报告 信息 描述 服务器遇到内部错误 (),导致...
我在Struts 2 Web项目的struts.xml上遇到问题。 我有登录页面,登录后,URL 将添加 /secure/*.action。 我尝试在 struts.xml 中有两个包。一个是正常的/而且是...
ognl.NoSuchPropertyException:org.apache.struts2.dispatcher.ServletActionRedirectResult.applicationId
我正在使用 Hibernate 3.0 和 Struts 2。我正在使用 @GenerateValue 来生成 id。 当我保存客户详细信息时,我有一个客户屏幕,我想移动到下一个屏幕 新
我正在使用 Hibernate 3.0 和 Struts 2。我正在使用 @GenerateValue 来生成 id。 当我保存客户详细信息时,我有一个客户屏幕,我想移动到下一个屏幕 新
如何获取controller中action属性的route值?
如何获取控制器中的动作路由值?喜欢: [路线(“示例页面”)] 公共 ActionResult MyAction() { //我想在这里使用“示例页面” } 我尝试过这样的,&...
尝试使用传递参数重定向到外部 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>
我写了一些在Struts 2中实现Struts 1功能的方法 Struts 1 ActionForward: new ActionForward("/home/ShowPage.do?page=edit",true); 我在 Struts 2 中也做了同样的事情: 公共字符串
当我在 Struts 2 中使用调度程序结果时,我没有收到操作错误。 在操作类中,以下代码用于添加错误消息。 添加操作错误(“错误”); 返回“失败&qu...
我一直遇到 AMPL 错误,每当我尝试对 mod 文件建模时,都会收到错误:d 未定义
我一直遇到 AMPL 错误,每当我尝试对 mod 文件建模时,都会收到错误:giap.mod,第 23 行(偏移 1996):d 未定义 上下文:{(d,b)>>>:<<<...
MVC应用程序,客户端向服务器发出请求,发生错误,想要将消息发送回客户端。 尝试了 HttpStatusCodeResult 但只返回 404,没有任何消息,我需要错误的详细信息...
在从 .net Framework 4.8 升级到 .net 8 期间,我正在努力从 IhttpActionResult 过渡到 IActionResult,并且我 protected IActionResult InvalidParameter(字符串参数名称) {...
Struts 2 Web 应用程序中的 HTTP 状态 404 和结果 JSP
这是我的设置: 眼镜: 雄猫7.0.109 jdk1.8.0_11 IDEA20232.5 当我输入此操作的“test5_5”方法时,它将重定向到 404 页面。 if(NumberUtils.notNullEquals(结果.getRes...