Apache Struts 2是一个基于servlet的可扩展框架,在其架构中实现了模型 - 视图 - 控制器(MVC)模式,用于创建企业级Java Web应用程序。
我正在处理 jQuery 代码,如下所示: 函数表单提交() { $('#myform').attr('action', "./myFilter.action"); $('#myform').submit(); } 形式: 我正在处理 jQuery 代码如下: function formSubmit() { $('#myform').attr('action', "./myFilter.action"); $('#myform').submit(); } 形式: <s:form name="myform" action="myAction" id="myform"> </s:form> 注意到 myFilter.action 在 myAction 之前被调用。但我不明白这是如何或为何发生的。有人可以解释一下吗? 假设 <s:form> 被浏览器视为 HTML <form> 元素:* jQuery 代码使用 .attr() 来更改表单的 [action] 属性。 [action]属性告诉表单通过 GET 或 POST 请求将数据发送到哪个 URL,具体取决于 [method] 属性的设置。 然后使用 .submit() 方法强制表单将其包含的数据提交到先前指定的 URL。 * 这是一个相当大的假设,因为 s: 命名空间可能是几乎任何东西的别名,因此不清楚在没有额外上下文的情况下如何使用该元素。 如果您处理按钮的 onclick 事件(没有提交事件),则可以使用该代码。 <button onclick="formSubmit()">Submit</button>
Struts 2.5.5(最新版本)是否支持 Java 1.6.x,因为我在运行示例应用程序时看到不受支持的版本。
Struts 2.5.12:文本标签显示模型类中字段的名称而不是值
我正在将其中一个项目从 Struts 2.3.3 升级到 2.5.12,我发现在升级后的项目中 标签无法显示模型类中字段的值,而是我...
Struts2中有没有办法在s:form标签中指定动态action属性?我想要类似下面的东西。 有没有办法在Struts2中的action标签中指定动态s:form属性?我想要像下面这样的东西。 <c:set var="formAction" value="baseAction" /> <c:if test="${someCondition}"> <c:set var="formAction" value="childAction" />Ac <s:form method="post" action="${formAction}"> <s:input....../> <s:select...../> </s:form> 我知道这可以使用 javascript 来实现,但我想避免重构。 我尝试使用 scriplet 来实现此目的,但问题是 Struts2 标签不采用 runtime attribute。我什至尝试了 OGNL,但也没有帮助。 使用Struts2标签设置值并检查条件,然后使用OGNL放置action属性。 <s:set var="formAction" value="'baseAction'" /> <s:if test="some_condition"> <s:set var="formAction" value="'childAction'" /> </s:if> <s:form method="post" action="%{#formAction}"> <s:input....../> <s:select...../> </s:form> 使用 s:url 标签动态构建操作 URL。 <s:url action="%{somePoperty}" var="myUrl"/> <s:form action="%{#myUrl}"> 事实上,Struts 标签的属性不仅接受 scriptlet,还接受 JSTL EL 表达式。
假设我们在 Struts 2、Hibernate、MySQL 中开发了一个网站,并且我们在这里添加了一些 try/catch 块,其中包含通过 Hibernate 的数据库调用。 我的问题是: 里面...
sj:使用目标提交且 errorElementId 未正确渲染
我有一个struts应用程序,在其中一个页面中我使用sj:submit提交带有targets和errorElementId属性的页面。我在页面上使用了Struts2验证,结果是...
<html:multibox> Struts 2 中的等效项
下面是html标签multibox,我想将其迁移到struts 2 ...
Struts 2 OGNL - 比较validation.xml中的两个字符串值
我是 Struts2 和 OGNL 的新手,正在制作一个带有注册页面的简单 Web 应用程序。有两个字段,密码和重新密码(重新输入密码)并使用验证框架...
我试图通过 JavaScript 将字段的值发送到 Struts 2 后端,但它返回 NullpointerException。 我尝试通过 JavaScript 将字段值发送到 Struts 2 后端,但它返回 NullpointerException。 <input type="hidden" id="employee.payslip.id" name="employee.payslip.id" value="5"/> .... 提交表单后,请求将被发送到以下 JavaScript 方法以发送到后端。 function payslipPayment(){ var formValues = $('#myform').serialize(); .... xmlhttp.open("get","../payslip/pay?"+formValues,false); xmlhttp.send(); } 请求将按如下方式创建并发送 http://localhost/payslip/pay/employee.payslip.id=5&employee.payslip.year=2013&.... 但是在后端,当我尝试显示它返回的值时NullPointerException。 Java: public class payslip { private Employee employee; public String pay{ System.out.println("Id:"+employee.payslip.id): System.out.println("Year:"+employee.payslip.year; ... } getter and setter } 课程: public class Employee { private Payslip payslip; .... getter and setter } public class Payslip{ private long id; ... getter and setter } 空指针异常表示员工或工资单未初始化。如果您使用的是 struts2,那么使用参数拦截器和模型驱动方法应该可以解决您的问题。 您需要将表单转换为json(如here)并发送到后端 然后 - 在java中你需要将json反序列化为java对象(例如,使用Jackson) 你可以像Alexey所说的那样,或者你可以遵循这种方法。您可以使用 ServletRequestAware 和 ServletResponseAware 接口,然后使用 request.getParameter() 获取传递的值。以下是如何执行此操作的示例。 Action类struts配置 <action name="hello" method="execute" class="com.home.struts2.HelloAction"> <result name="success">hello.jsp</result> </action> 动作课 public class HelloAction extends ActionSupport implements ServletRequestAware,ServletResponseAware{ HttpServletResponse response; HttpServletRequest request; public String execute() { System.out.println("AjaxCall" + request.getParameter("param")); String infoXml = "Parameter passed: " + request.getParameter("param"); response.setContentType("text/html"); response.setHeader("Cache-Control", "no-cache"); try { response.getWriter().write(infoXml); } catch (IOException ioe) { ioe.printStackTrace(); } return null; } public void setServletResponse(HttpServletResponse response) { this.response = response; } public void setServletRequest(HttpServletRequest request) { this.request = request; } public HttpServletRequest getServletRequest() { return this.request; } } JavaScript var xmlHttp; function sendreq(){ var URL = "hello.action?param=sandy"; try{ xmlHttp=new XMLHttpRequest(); }catch (e){ try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch (e){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch (e){ alert("Your browser does not support AJAX!"); return false; } } } xmlHttp.onreadystatechange = showMessage; xmlHttp.open("GET", URL, true); xmlHttp.send(null); } 实现员工和工资单的可序列化接口。另外,请确保两者都有空的构造函数。 启用 struts2 devMode 以获取附加日志。启用后,您将看到 OGNL 异常,了解具体是哪个字段出现问题。该错误必须非常容易处理。 http://www.mkyong.com/struts2/struts-2-development-mode-example/ 我猜用于该操作的拦截器堆栈存在一些问题,只需尝试使用defaultStack。 <action name="payslip/pay" class="..."> <interceptor-ref name="defaultStack"/> <result name="success">/success.jsp</result> <result name="input">/error.jsp</result> </action> 您使用的是框架还是普通的 servlet?如果您使用的是像 struts 这样的框架,那么所有这些答案都太复杂了。 从外观上看,我认为您只是使用了映射的 servlet,这意味着上面关于通过 url 传递命名参数的答案是正确的。您可以使用 post 来隐藏这些命名参数,而不是 get through。 以下是我仅使用 servlet 的方法。不过,如果我是你并且正在做一个完整的项目,我会使用 JSF,以便更轻松地传递数据。 java public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String payslipID = request.getParameter("payslipid"); } js <script> var payslipid = $('#employee_payslip_id') xmlhttp.open("POST","../payslip/pay",false); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("payslipid="+payslipid); </script> 正如另一篇文章中提到的,您必须单独获取(并放置在帖子中或获取数据)所有参数,除非您执行了一些单独的字符串列表。这样做并不是一件可笑的事情,因为无论如何您都需要将所有这些值分离到 java 中它们自己的变量中。 编辑: 上面的答案实际上说明了您需要做什么,但也许它会有助于使其更清楚。在您定义操作的 struts 配置文件中,例如 <action class="org.example.Payslip" name="payslip"> <interceptor-ref name="params"/> <result name="success">/success.jsp</result> </action> 确保那里有参数拦截器。它将使得服务器将参数映射到设置器。这样您就不需要为您发送的每项内容进行 getparameter 调用。 此外,如果您按照上面的方式进行了映射,则网址应该类似于 .../payslip.action!pay?payslipid=1234&employeeid=1234。这告诉它使用 payslip.class 和 pay 函数。 在action标签中添加输入参数;它允许您将参数从 struts 操作类传递到 form/.jsp struts.xml <action name="..." class="UserAction"> <param name="id"></param> <result name="input">/WEB-INF/jsp/User.jsp</result> </action> 动作课 public class UserAction { private int id; // this is called by the struts.xml to set the value public void setId(int id) { this.id = id; } //a getter is needed as well to display value in the .jsp } 因为它是一个隐藏变量,不属于值堆栈的一部分,您可以尝试以这种方式传递它。 如果这不是您的问题; 我认为你必须将 bean 注入到 Action 类中。 @注入员工; bean 到 Action 类中会有帮助。 还调试值堆栈。 Struts2 使用 params 拦截器来填充 HTTP 请求提交的表单值。 建议使用POST方法,因此如果您有敏感数据并且希望它不反映在URL中。 拦截器使用参数名称通过 OGNL 运行时来评估应该在 valueStack 中找到 引用的表达式。 你已经得到了NullPointerException,因为你没有初始化或注入依赖关系到由 OGNL 评估引用的对象。因为您使用的是嵌套 bean,所以所有嵌套属性都应该是可访问和初始化的(或者至少 Struts2 知道如何创建这些对象),并且属于放置在值堆栈的 top 上的操作类。 您需要使用ModelDriven接口。实现 ModelDriven 并重写其方法,然后使用 modelDriven 的方法返回您的对象。 Struts2 文档
如何使用 Struts 2 在同一行中定位多个文本字段而不使用 theme="simple"?
我想使用 Struts 2 设计一个在同一行显示用户 🆔 和密码的网页。 如何在不使用 theme='simple' 的情况下管理它? <%@taglib uri="/struts-tags" prefix="...
需要在 Struts2 中使用 Tuckey URL 重写进行 URL 重写的帮助
我想重写基于 Struts 2 的应用程序的 URL(当前在开发环境中)。我搜索了它并找到了 Tuckey URL Rewrite 并将其设置在我的项目中。现在我想要我的
我正在尝试将一些文本加载到 JSP 页面上。我真的不知道该怎么做。我正在使用 Struts2,因此我可以使用它的标签。 这是正文中唯一的一行: 我正在尝试将一些文本加载到 JSP 页面上。我真的不知道该怎么做。我正在使用 Struts2,所以我可以使用它的标签。 这是正文中唯一的一行: <s:property value="myTextToAdd" /> 我知道这没什么好继续的,但我现在不知道该问什么。我只是希望能够调用 java 类并让它返回我想要的文本到 JSP 页面。 首先,确保使用 Action -> JSP 流程。这允许为浏览器响应准备/呈现 JSP,因此它已经通过 Struts 标签(如 property 标签)填充了数据。在操作类中,您创建一个要通过 property 标签打印出来的属性。 private String myTextToAdd; //getter public String getMyTextToAdd(){ return myTextToAdd; } //setter you need if you want to submit it, could be here 然后在行动中你应该做类似的事情 public String execute(){ myTextToAdd = "Some text to out"; ... return SUCCESS; } SUCCESS 结果应返回 dispatcher 结果类型,这是默认值。您还配置了操作以将某些 URL 和结果映射到它。然后您可以使用 property 标签来输出该值。 参见 Struts2 tutorial 的详细解释。 这是 struts 2 的一些简单教程 Struts 2 Hello World 它将为您提供基本的启动介绍。试试这个也许你会对struts2有一些了解
我正在学习 JavaBrains 教程,完成课程后,Tomcat 说: 严重:启动过滤器 struts2 时出现异常 还 : 原因:无法加载配置。 - 操作 - 文件:/用户/
如何在不使用复选框或单选按钮的情况下将表中选定的数据发送到 Struts2 中的操作?
我有一个使用 标签显示的表格。表值包含在 ArrayList 中。我在列表的每一行上都有一个编辑按钮。当用户单击编辑按钮时,继续...
我正在将 JSP/Servlet 动态 Web 项目转换为 Struts 2,自定义错误页面(之前与 JSP/Servlet 版本一起使用)已停止工作。 当我根据 acc 引发 404 错误时...
我写了一些在Struts 2中实现Struts 1功能的方法 Struts 1 ActionForward: new ActionForward("/home/ShowPage.do?page=edit",true); 我在 Struts 2 中也做了同样的事情: 公共字符串
我正在用操作附加参数,但在我的 Struts 2 页面上遇到异常。 PWC6212:需要等号 下面是我的操作,附加了参数代码,需要提交...
我在我的应用程序中使用 Struts 2。我有一个 MessageResources.properties,其中给出了所有键和值。该文件位于 ${tomcat_home}/properties/resources 位置。我的问题是...
我在通过 struts 访问属性时遇到问题。我想知道是否有对 struts 更有经验的人可以给我一些指导。 Java 类的设置大致如下...
我正在开发一个大学网站。我在 jqGrid 中显示员工详细信息以及员工姓名、地址、手机号码和 部门。网格如下所示,数据库如下所示