struts2 相关问题

Apache Struts 2是一个基于servlet的可扩展框架,在其架构中实现了模型 - 视图 - 控制器(MVC)模式,用于创建企业级Java Web应用程序。

将 getGenerateKeys() 传递到下一页

我想将 getGneratedKeys()(也称为 last_ generated_id)从当前 Java 类传递到下一个类。然而,我对如何储存和收集却一无所知......

回答 3 投票 0

如何使用常规 HTML 连接并执行 Struts 2 中的 validate() 方法?

我正在尝试使用 Struts 2 创建一个登录表单。为此,我在下面创建了一个 JSP 页面 我正在尝试使用 Struts 2 创建一个登录表单。为此我在下面创建了一个 JSP 页面 <form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()"> <table class="tblLogin"> <tr><th colspan="2">Log in</th></tr> <tr> <td class="labels">Username:</td> <td><input type="text" id="txtUsername" maxlength="10"></td> </tr> <tr> <td class="labels">Password:</td> <td><input type="password" id="txtPassword" maxlength="16"></td> </tr> <tr> <td colspan="2" align="center"> <input type="image" class="loginButton" src="design/images/btn3.png" value="Log in"> </td> </tr> </table> </form> 在页面中,我已使用 JavaScript 验证了页面。我还创建了带有 getter 和 setter 的操作类以及一个返回 execute() 的 SUCCESS 方法。 我在网上搜索了一下,发现所有的例子都是使用Struts标签。 如何使用常规 HTML 连接并执行 Struts 中的 validate() 方法。否则,使用 Struts 2 验证和提交表单的方法是什么? 现在,我的问题是,我给出了错误的username并且发生了password表单提交。 对于服务器端验证: 你必须在你的动作类中扩展ActionSupport。然后,重写 validate() 方法。这是一个例子: @Override public void validate() { if (this.username == null || this.username.isEmpty()) { addFieldError("username", "Username is required"); } if (this.password == null || this.password.isEmpty()) { addFieldError("password", "Password is required"); } } 如果这对您有用,您可以在 validate() 方法 上添加更多语句 此外,您还可以使用 ActionSuport getText() 方法来获取包含要显示的错误消息的字符串: @Override public void validate() { if (this.username == null) { addFieldError("username", getText("err_username_req")); } ..... // same for password and other statements } 您所要做的就是将 err_username_req 作为属性包含在您的 struts2 资源文件中(就在您想要保留字符串的文件中,例如,用于验证错误和其他内容),然后您就可以开始了: ) . 在常规 HTML 中,您缺少一些 Struts2 功能,例如 xhtml 主题。该主题允许显示操作错误以及输入字段。要验证输入字段,您需要将值作为参数传递给操作。提交表单时会创建操作实例。如果使用相同的名称将字段绑定到操作属性,效果会更好。 默认情况下,参数不仅会合并在操作上下文中,还会填充操作实例。确保您的操作类扩展了 ActionSupport,因为它是调用 validation() 方法所必需的,并且具有验证错误的上下文。 使用defaultStack拦截器,包括validation拦截器和workflow拦截器。如果操作有验证错误,最后一个将阻止该操作执行。 <form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()"> <table class="tblLogin"> <tr><th colspan="2">Log in</th></tr> <tr> <td class="labels">Username:</td> <td><input type="text" id="txtUsername" name="username" maxlength="10"></td> </tr> <tr> <td class="labels">Password:</td> <td><input type="password" id="txtPassword" name="password" maxlength="16"></td> </tr> <tr> <td colspan="2" align="center"> <input type="image" class="loginButton" src="design/images/btn3.png" value="Log in"> </td> </tr> </table> </form>

回答 2 投票 0

如何使用常规 HTML 连接并执行 Struts 的验证方法

我正在尝试使用 Struts 2 创建一个登录表单。为此,我在下面创建了一个 JSP 页面 我正在尝试使用 Struts 2 创建一个登录表单。为此我在下面创建了一个 JSP 页面 <form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()"> <table class="tblLogin"> <tr><th colspan="2">Log in</th></tr> <tr> <td class="labels">Username:</td> <td><input type="text" id="txtUsername" maxlength="10"></td> </tr> <tr> <td class="labels">Password:</td> <td><input type="password" id="txtPassword" maxlength="16"></td> </tr> <tr> <td colspan="2" align="center"> <input type="image" class="loginButton" src="design/images/btn3.png" value="Log in"> </td> </tr> </table> </form> 在页面中,我已使用 JavaScript 验证了页面。我还创建了带有 getter 和 setter 的操作类以及一个返回 execute() 的 SUCCESS 方法。 我在网上搜索了一下,发现所有的例子都是使用Struts标签。 如何使用常规 HTML 连接并执行 Struts 中的 validate() 方法。否则,使用 Struts 2 验证和提交表单的方法是什么? 现在,我的问题是,我给出了错误的username并且发生了password表单提交。 对于服务器端验证: 你必须在你的动作类中扩展ActionSupport。然后,重写 validate() 方法。这是一个例子: @Override public void validate() { if (this.username == null || this.username.isEmpty()) { addFieldError("username", "Username is required"); } if (this.password == null || this.password.isEmpty()) { addFieldError("password", "Password is required"); } } 如果这对您有用,您可以在 validate() 方法 上添加更多语句 此外,您还可以使用 ActionSuport getText() 方法来获取包含要显示的错误消息的字符串: @Override public void validate() { if (this.username == null) { addFieldError("username", getText("err_username_req")); } ..... // same for password and other statements } 您所要做的就是将 err_username_req 作为属性包含在您的 struts2 资源文件中(就在您想要保留字符串的文件中,例如,用于验证错误和其他内容),然后您就可以开始了: ) . 在常规 HTML 中,您缺少一些 Struts2 功能,例如 xhtml 主题。该主题允许显示操作错误以及输入字段。要验证输入字段,您需要将值作为参数传递给操作。提交表单时会创建操作实例。如果使用相同的名称将字段绑定到操作属性,效果会更好。 默认情况下,参数不仅会合并在操作上下文中,还会填充操作实例。确保您的操作类扩展了 ActionSupport,因为它是调用 validation() 方法所必需的,并且具有验证错误的上下文。 使用defaultStack拦截器,包括validation拦截器和workflow拦截器。如果操作有验证错误,最后一个将阻止该操作执行。 <form method="post" id="frmLogin" action="login" onSubmit="return loginValidation()"> <table class="tblLogin"> <tr><th colspan="2">Log in</th></tr> <tr> <td class="labels">Username:</td> <td><input type="text" id="txtUsername" name="username" maxlength="10"></td> </tr> <tr> <td class="labels">Password:</td> <td><input type="password" id="txtPassword" name="password" maxlength="16"></td> </tr> <tr> <td colspan="2" align="center"> <input type="image" class="loginButton" src="design/images/btn3.png" value="Log in"> </td> </tr> </table> </form>

回答 2 投票 0

如何将 ActionErrors 从拦截器传递到 Struts 2 中的操作?

我一直在 Struts 2 文档中阅读有关 StoreInterceptor 的内容,它讨论了如何将 StoreInterceptor 粘贴到 struts-config.xml 的 Action 定义中,并且它可以正常工作。但是...

回答 1 投票 0

Struts 2 中<s:iterator>标签除法时如何获取数字的ceil值

我正在使用 Struts 标签来显示我的数组列表,我必须在 标签的 end 属性中放置一个条件。两个整数相减时如何获取ceil值...

回答 3 投票 0

在struts标签中划分时获取数字的ceil值

我正在使用 Struts 标签来显示我的数组列表,我必须在 标签的 end 属性中放置一个条件。两个整数相减时如何获取ceil值...

回答 3 投票 0

使用迭代器时如何获取Struts 2表单的所有键?

我在使用 Struts 2 的 JSP 中有以下代码块(位于表单中的表内): 我在使用 Struts 2 的 JSP 中有以下代码块(位于表单中的表格内): <s:iterator value="editableService.parameters" status="serviceStatus"> <tr> <td><s:property value="name" /></td> <td><s:textfield name="value" label="Value" size="40" /></td> </tr> </s:iterator> 在我的 Struts2 操作中,当用户提交时如何获取所有键及其值? 由于此表单的内容对于每个迭代器都是动态的,因此我无法使用单个 POJO 来表示表单内容。 这是你必须做的,你需要编写代码 行动中: private List<String> values = new ArrayList<>(); public List<String> getValues(){ return values; } 在 JSP 中: <s:iterator value="editableService.parameters" status="serviceStatus"> <tr> <td><s:property value="name" /></td> <td><s:textfield name="values[%{#serviceStatus.index}]" value="%{value}" label="Value" size="40" /></td> </tr> </s:iterator>

回答 1 投票 0

如何在 Struts 2 jQuery 饼图中设置自定义颜色

我正在实现 Struts 2 JQuery 饼图。我不知道如何为图表设置自定义颜色。在后端,我只是创建一个映射,其中键为字符串,值为整数。我应该具备什么属性...

回答 1 投票 0

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

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

回答 1 投票 0

在自定义 JSP 模板中使用 Struts 2 taglib 实现邮件模板

我正在构建一个利用 Struts 2 作为主要框架的应用程序,但要求之一是该应用程序发送自动电子邮件。 由于 Struts 2 不包含太多额外的帮助...

回答 1 投票 0

java.lang.ClassCastException:在 HashMap 中使用 <display:table> 标记时,java.lang.Integer 无法转换为 java.lang.String [已关闭]

我正在创建一个表管理器。我已经用简单的 HTML Table 标签实现了它。 但现在,我想使用显示标签来实现它。 基本上,整个页面是动态的,也就是说,如果我添加一个

回答 1 投票 0

如何将列表作为参数从一个 JSP 传递到 Struts 2 中包含的 JSP?

想象一下,您希望下面的 JSP 代码片段位于多个页面中,唯一不同的是传递给它的列表(示例中的 xxx)。 想象一下,您希望下面的 JSP 代码片段位于多个页面中,唯一不同的是传递给它的列表(示例中的 xxx)。 <s:iterator value="%{#xxx}" var="module" status="stat"> <s:property value="#module.name"/> </s:iterator> 我的第一个想法是将其放在 myFragment.jsp 中,并在其他页面中使用 <s:include> 来包含它,并将列表作为 <s:param> 传递,例如: <s:include value="/myFragment.jsp"> <s:param name="xxx" value="%{#myModules}"></s:param> </s:include> 问题是<s:param>似乎只传递字符串,所以上面的代码不起作用。 我也尝试过使用 <s:set var="myParam">${param.xxx}</s:set> (并尝试将 myParam 放入迭代器中,但没有成功。 问题: 正确的方法是什么? 对于这种情况,您希望通过将公共代码重构到统一位置来消除 JSP 中的重复代码,是否有更优雅的解决方案? 编辑(示例): 例如,您有 Page1.jsp 和 Page2.jsp。两者都使用非常相似的 <s:iterator>,唯一的区别是传递给它的变量。目标是将 <s:iterator> 重构到某个地方,这样你就只写一次。 当然,在现实生活中,需要重构的代码不仅仅是<s:iterator>。 Page1.jsp: <s:action name="MyAction" var="xxx"></s:action> <s:iterator value="%{#xxx}" var="module" status="stat"> <s:property value="#module.name"/> </s:iterator> Page2.jsp: <s:iterator value="%{#variableFromStack.modules}" var="module" status="stat"> <s:property value="#module.name"/> </s:iterator> 我认为没有任何理由将参数传递给 s:include 标签。请注意,参数只能作为请求参数来访问: 参数作为请求参数传递,因此请使用 ${param.ParamName} 表示法来访问它们。请勿使用 s:property 标签访问包含文件中的参数。 正确的做法是在valueStack上推送参数。 优雅的解决方案是使用 Tiles 框架。 Tiles 是一个模板框架,旨在轻松创建具有一致外观和感觉的 Web 应用程序页面。它可以用于页面装饰和组件化。 有 Tiles 2 和 Tiles 3 集成插件。

回答 1 投票 0

如何在 Struts 2 中启用/禁用 <s:checkbox>?

我想在我的页面中显示 2 个复选框(称为 box1 和 box2)。默认值为 box1 = false 和 box2 = false。但我还必须仅在 box1 = true 时启用 box2。所以我创建了以下...

回答 2 投票 0

Struts 2项目是使用MyEclipse构建的,但没有在外部Tomcat服务器上运行

我使用 MyEclipse IDE 构建了一个 Struts 2 + Hibernate Web 项目。 当我在MyEclipse、Tomcat环境中运行它时,它工作正常,但我想单独在Tomcat服务器上运行它(意味着除了MyE...

回答 1 投票 0

使用 <s:select> 标签而不应用列表属性

我正在将 Struts 1 迁移到 Struts 2 Web 项目。 下面是 Struts 1 代码: 我正在将 Struts 1 迁移到 Struts 2 Web 项目。 下面是 Struts 1 代码: <html:select property="dobYear" styleId="dobYear" styleClass="text_field text2" style="width:70px" onchange="loadDayOptions(this.options[this.options.selectedIndex].value, getElement('dobMonth').options[getElement('dobMonth').options.selectedIndex].value, getElement('dobDay'));"> <html:option value="">--</html:option> <% int thisYear = Calendar.getInstance().get(Calendar.YEAR); int fromYear = thisYear - 17; int toYear = 1900; for(int i=fromYear; i>=toYear; i--){ %> <html:option value="<%=String.valueOf(i) %>"><%=String.valueOf(i) %></html:option> <% } %> </html:select> 如果我想在 Struts 2 中使用 <s:select> 的以下代码,但不使用 list 属性,而是使用 <option>,可以吗?我的语法正确吗? <s:select value="#{editForm.dobYear}" name="editForm.dobYear" id="dobYear" styleClass="text_field text2" style="width:70px" onchange="loadDayOptions(this.options[this.options.selectedIndex].value, getElement('dobMonth').options[getElement('dobMonth').options.selectedIndex].value, getElement('dobDay'));"> <option value="">--</option> <% int thisYear = Calendar.getInstance().get(Calendar.YEAR); int fromYear = thisYear - 17; int toYear = 1900; for(int i=fromYear; i>=toYear; i--){ %> <option value="<%=String.valueOf(i) %>"><%=String.valueOf(i) %></option> <% } %> </s:select> 语法不正确。根据 TLD,struts select 标签应该有一个空的正文。 你不能以这种方式使用struts select标签。但你可以将其转换为html select <select value="${editForm.dobYear}" name="editForm.dobYear" id="dobYear" styleClass="text_field text2" style="width:70px" onchange="loadDayOptions(this.options[this.options.selectedIndex].value, getElement('dobMonth').options[getElement('dobMonth').options.selectedIndex].value, getElement('dobDay'));"> <option value="">--</option> <% int thisYear = Calendar.getInstance().get(Calendar.YEAR); int fromYear = thisYear - 17; int toYear = 1900; for(int i=fromYear; i>=toYear; i--){ %> <option value="<%=String.valueOf(i) %>"><%=String.valueOf(i) %></option> <% } %> </select>

回答 1 投票 0

使用 <s:select> 标签而不应用列表属性

我正在将 Struts 1 迁移到 Struts 2 Web 项目。 下面是 Struts 1 代码: 我正在将 Struts 1 迁移到 Struts 2 Web 项目。 下面是 Struts 1 代码: <html:select property="dobYear" styleId="dobYear" styleClass="text_field text2" style="width:70px" onchange="loadDayOptions(this.options[this.options.selectedIndex].value, getElement('dobMonth').options[getElement('dobMonth').options.selectedIndex].value, getElement('dobDay'));"> <html:option value="">--</html:option> <% int thisYear = Calendar.getInstance().get(Calendar.YEAR); int fromYear = thisYear - 17; int toYear = 1900; for(int i=fromYear; i>=toYear; i--){ %> <html:option value="<%=String.valueOf(i) %>"><%=String.valueOf(i) %></html:option> <% } %> </html:select> 如果我想在 Struts 2 中使用 <s:select> 的以下代码,但不使用 list 属性,而是使用 <option>,可以吗?我的语法正确吗? <s:select value="#{editForm.dobYear}" name="editForm.dobYear" id="dobYear" styleClass="text_field text2" style="width:70px" onchange="loadDayOptions(this.options[this.options.selectedIndex].value, getElement('dobMonth').options[getElement('dobMonth').options.selectedIndex].value, getElement('dobDay'));"> <option value="">--</option> <% int thisYear = Calendar.getInstance().get(Calendar.YEAR); int fromYear = thisYear - 17; int toYear = 1900; for(int i=fromYear; i>=toYear; i--){ %> <option value="<%=String.valueOf(i) %>"><%=String.valueOf(i) %></option> <% } %> </s:select> 语法不正确。根据 TLD,struts select 标签应该有一个空的正文。 你不能以这种方式使用struts select标签。但你可以将其转换为html select <select value="${editForm.dobYear}" name="editForm.dobYear" id="dobYear" styleClass="text_field text2" style="width:70px" onchange="loadDayOptions(this.options[this.options.selectedIndex].value, getElement('dobMonth').options[getElement('dobMonth').options.selectedIndex].value, getElement('dobDay'));"> <option value="">--</option> <% int thisYear = Calendar.getInstance().get(Calendar.YEAR); int fromYear = thisYear - 17; int toYear = 1900; for(int i=fromYear; i>=toYear; i--){ %> <option value="<%=String.valueOf(i) %>"><%=String.valueOf(i) %></option> <% } %> </select>

回答 1 投票 0

org.apache.struts2.util.FastByteArrayOutputStream.decodeAndWriteOut 处的 java.nio.BufferOverflowException

异常: org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java...

回答 2 投票 0

Struts 2 中管理数据库连接的方式是什么,不同环境下有什么区别吗?

我有一个应用程序,当前使用 Maven 配置文件部署在多个位置,根据配置文件选择不同的属性文件,然后使用 c...

回答 1 投票 0

$.getJSON 未将数据从 Struts 2 Action 类检索到 JSP 页面

我想从 JSP 页面中的 Struts 2 Action 类中检索字段。 我的 JSP JavaScript 代码能够触发其 Action 类,但无法在

回答 5 投票 0

没有为映射名称为“success”的类型“dynamic-jasper”定义结果类型

我正在尝试将 DynamicJasper 5.0.0 与 Struts 2.3.4 一起使用。我使用以下代码以 PDF 格式显示数据: 在动作类中: 尝试 { FastReportBuilder drb = new FastReportBuilder();

回答 1 投票 0

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