我有以下问题:当我完成一个表单并且操作保存表单的值时,我需要传递一个参数(例如ID),这将转发到结果="成功",我需要将要调用的操作在成功中带有ID和其他参数,以便以后用于保存此信息(info-form2和info.form1)...
例如:
FORM1(USER)===="成功"====> FORM2(ADDRESS)
userForm.html ===================> addressForm.html?user_id = X ...(其中X:Id将UserAction抛出(方法:保存)传递给AddressAction(方法:newAddress))
我将非常感谢你的帮助
提前致谢
我想以不同的方式处理AJAX请求与正常请求的错误.
如何在Struts2操作中识别请求是否为AJAX?
我在jsp中有一个表单.有两个提交按钮:"搜索"和"添加新"按钮.我已经为每个按钮设置了自己的方法属性.
<s:form name="searchForm" action="employeeAction" method="post">
<s:textfield name="id" label="Employee ID"/>
<s:textfield name="name" label="Employee Name"/>
<s:submit value="Search" method="doSearch"/>
<s:submit value="Add New" method="doAddNew"/>
</s:form>
Run Code Online (Sandbox Code Playgroud)
在struts.xml中
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="default" namespace="/" extends="struts-default">
<default-action-ref name="index" />
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<global-exception-mappings>
<exception-mapping exception="java.lang.Exception" result="error"/>
</global-exception-mappings>
</package>
<package name="example" namespace="/example" extends="default">
<action name="employeeAction" class="example.EmployeeAction">
<result name="search">/example/search.jsp</result>
<result name="add">/example/add.jsp</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud)
在EmployeeAction类中
public class EmployeeAction …Run Code Online (Sandbox Code Playgroud) 我正进入(状态:
com.opensymphony.xwork2.util.logging.commons.CommonsLogger 警告 找不到操作或结果 与上下文路径 [/] 关联的命名空间 [/] 和操作名称 [] 没有映射的操作。- [未知地点]
我使用 RAD + WebSphere 的组合进行开发,代码如下:
struts.xml:
<struts>
<constant name="struts.devMode" value="true" />
<constant name="struts.custom.i18n.resources" value="ApplicationResources" />
<package name="default" extends="struts-default" namespace="/">
Run Code Online (Sandbox Code Playgroud)
网页.xml:
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>Login.jsp</welcome-file>
</welcome-file-list>
Run Code Online (Sandbox Code Playgroud)
我已阅读所有博客并尝试了网站上提到的所有内容。由于某些不同的原因,我无法找到这是一个错误。
我正在阅读Struts2文档,发现其文档中存在一些矛盾.在此链接https://struts.apache.org/docs/convention-plugin.html
Convention插件允许操作类为操作定义不同的结果.结果分为两类,全球和地方.全局结果在操作类中定义的所有操作之间共享.这些结果被定义为动作类的注释.本地结果仅适用于定义它们的操作方法
但是,在另一个链接https://struts.apache.org/docs/result-annotation.html中,建议:
@Result注释位于Action类级别而不是方法级别.这与基于XML的Action配置中的内容相匹配.不要试图诠释你的行动方法; 不起作用.
哪一个是正确的?可以@Result在方法级别定义吗?
java configuration struts2 struts2-convention-plugin struts-action
我正在使用Struts2创建一个Web应用程序,我遇到了与任何URL一起使用的映射操作的问题.
在我的struts.xml文件中,我已经配置了一个名为"/ registration"的包,其中包含一些操作,主要是"register".我的应用程序的上下文根是"app/test".
要访问注册表单,我可以转到"localhost:8080/app/test/registration/register.action"并加载我的表单并且效果很好.
但是,如果在命名空间后面的URL中添加了任何内容,例如"localhost:8080/app/test/registration/arbitrary/text/here/register.action",表单仍会加载.
我想防止这种情况发生,因此您只能访问表单正确的URL.我在struts.xml和web.xml中尝试了许多不同的配置选项但无济于事,我无法在网上轻松找到有关此问题的知识.
任何帮助将不胜感激,谢谢!
在struts.xml
<struts>
<package name="myPackage" namespace="/registration" extends="struts-default">
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
</result-types>
<action name="register" class="edu.uconn.test.action.RegistrationAction" method="input">
<result name="input" type="tiles">/register.tiles</result>
</action>
</package>
</struts>
Run Code Online (Sandbox Code Playgroud) 我写了一个简单的代码来将rest与Struts 2.3.24集成
我有我的 Struts XML:
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.mapper.class" value="rest" />
<!-- Overwrite Convention -->
<constant name="struts.convention.action.suffix" value="Controller"/>
<constant name="struts.convention.action.mapAllMatches" value="true"/>
<constant name="struts.convention.default.parent.package" value="com.pag.rest.service"/>
<constant name="struts.convention.package.locators" value="service"/>
</struts>
Run Code Online (Sandbox Code Playgroud)
我的控制器类是:
package com.pag.rest.service;
public class RequestController {
// GET
public String index() {
return "SUCCESS";
}
// GET
public String show() {
return "SUCCESS";
}
// POST
public String create() {
return "Create - SUCCESS";
}
// PUT
public String update() {
return …Run Code Online (Sandbox Code Playgroud) 在使用Struts2(2.3.20)的项目中,我想在应用程序启动时运行配置的操作(名称,类,命名空间,方法).
我正在使用
供参考:我已经完成了一些关于bean和Struts注入的工作,所以不是很全新,但是我坚持解决这里所说的问题.
关于如何获得这个的任何指示将不胜感激.
阅读Andrea在下面的回答我看到我需要解释我需要什么.
我正在为应用程序构建应用程序菜单构建器功能.我的计划是获取操作配置,并根据选定操作类和方法的注释中的信息构建"菜单节点"树.
我在config-browser中的代码问题是,Configuration(xwork)似乎在Struts组件之外不可用.由于这是一个应用程序启动任务,它并不真正适合Struts的MVC组件模型.我想把菜单构建初始化放在一个ServletContextListener.
每个请求只是连接actionconfig < - > annotation < - > my_custom_menu.从这里我可以生成一个菜单结构,从动作类和方法的注释提供.
public class ActionMenuBuilderListener implements ServletContextListener {
@Override
public void contextInitialized(ServletContextEvent arg0) {
List<ActionCfg> actions = Struts.getConfiguredActions(); // thisi is where I'd like some help
for(ActionCfg action : actions) {
MenuAnnotation annotation = getAnnotationFromMethodOrClass(action);
if(annotation != null) {
addMenuItem(action, annotation);
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
下面ActionCfg是Struts为操作配置返回的任何类,Struts.getConfiguredActions()是对Struts组件的一次或多次调用,addMenu(...)也是我向我的结构添加菜单项节点的地方.该结构后来成为JSP-s构建菜单的目标. …
我正在使用Struts 1.3创建一个类似向导的界面,包括3个jsp页面和3个Struts动作.流程如下:page1> action1 - > page2> action2 - > page3> action3
我使用会话表单bean(具有会话范围的操作表单)在请求之间共享数据.我遇到的问题是我在第2页中提交的数据在操作2中可用,但在行动3中没有.我有疑问可能是我在第3页上没有表格来保存这些数据,或者因为我打电话action3通过jQuery post方法而不是常规表单提交,但我真的不确定.
我差不多一天都在挖掘所有互联网,但仍然没有运气.谁能提供一些帮助.非常感谢.
我有一个编辑页面,我想从数据库中检索主题和级别,并显示为用户编辑课程的选项.
提交表单时,它将发出新请求,courseBean将使用XML验证捕获用户输入.当XML验证失败时,它将使用courseBean转发,后者刚刚捕获了edit.jsp的用户输入.

所以每次我去edit.jsp,我都会检索数据库记录.我应该这样做吗?
此外,我尝试检索主题lit和level lit并将它们作为请求属性存储在动作类中,该动作类在第一次显示edit.jsp.但是,当新请求来自用户输入时,从数据库中检索的主题列表和级别列表将不再可用.
代码(edit.jsp):
<%
Session session2 = HibernateUtil.getSessionFactory().getCurrentSession();
Transaction tx = session2.beginTransaction();
Query q = session2.createQuery("from Subject");
List subjectList = q.list();
List levelList = session2.createQuery("from Level").list();
%>
<div class="control-group">
<label class="control-label" for="inputPassword">Subject</label>
<div class="controls">
<select name="subject_id">
<%
for (Object subjectObject : subjectList) {
Subject subject = (Subject) subjectObject;
%>
<option value="<%=subject.getId()%>"><%=subject.getName()%></option> …Run Code Online (Sandbox Code Playgroud) 在这段代码中,我使用ActionContext从Request对象获取Session和ServletActionContext.我觉得这是不好的做法,因为必须只对Request对象使用ActionContext.
ActionContext的Request对象是否等同于Servlets中的Request对象?如果是,如何使用它获取请求参数?
Map session = (Map) ActionContext.getContext().getSession();
HttpServletRequest request = ServletActionContext.getRequest();
String operatorId = request.getParameter("operatorId");
session.put("OperatorId", operatorId);
// getting hashmap from Bean
analysisNames= slsLoginDetailsRemote.getAnalysisNamesIdMap();
// sending map for multiselect
session.put("AnalysisNames",analysisNames);
Run Code Online (Sandbox Code Playgroud)