struts2 相关问题

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

从 Struts1 迁移到 Struts2

我正在将应用程序从 Struts 1 迁移到 Struts 2。我遇到了以下代码片段。请让我知道如何替换 Struts 2 中的代码片段。 受保护的 ActionForward

回答 1 投票 0

Struts 2 中会话无效后发送注销配置值

我有一个 Struts 2 Web 应用程序。 目前,当用户单击注销 URL 时,我们会调用注销操作,并在方法中调用 session.invalidate()。如果成功,那么我们将调用 logout.jsp....

回答 2 投票 0

从 JSP 访问 struts 操作方法

我在从返回的 JSP 中的 struts 2 操作访问方法时遇到问题。据我了解,如果我有一个如下所示的操作: 公共类 HomeAction { 公共字符串前...

回答 3 投票 0

如何使用ThreadLocal存储数据

我正在使用 Strust2 和 Hibernate。我必须找出货币汇率(美元到印度卢比)。我需要在多个地方使用此信息。为此,我使用 ThreadLocal

回答 3 投票 0

将值从jsp中的javascript传递到struts2中的action类

我如何将值从javascript传递到struts2中的java类? 这是与我想要的类似的链接。但是它对我不起作用。 我尝试过这样的事情。 Struts 标签隐藏在...

回答 4 投票 0

Struts 2 JUnit 插件 + Hibernate

我正在使用 Struts 2 JUnit 插件测试我的 Struts 2 Web 应用程序,并进行单元测试。 在我的 Web 应用程序中,我使用 fullHibernateCore-plugin-1.4 来集成 Hibernate 功能。 当我...

回答 2 投票 0

Struts 2 和 JDK 17 语言环境中的数字

使用struts 6.3.0.1和jdk 8,下面生成1,2,3, , 使用 struts 6.3.0.1 和 jdk 8,下面生成 1, 2, 3, <s:iterator begin="1" end="3"> <s:property value="top"/>, </s:iterator> 通过更改为 jdk 17 它会生成 ۱, ۲, ۳,(这些是 1, 2, 3, 的波斯数字) 我将 struts.locale 设置为 fa_IR <constant name="struts.locale" value="fa_IR" /> 该网站是多语言的,并且使用了 i18n 拦截器。 这可能是一个很好的功能,但该网站的构建方式是使用英文数字。无论如何,有什么办法可以让我无论语言环境如何都可以使用英文数字 我尝试通过session.setAttribute(Config.FMT_LOCALE, new Locale("en", "US")); 修复它,但没有运气 要打印英文数字,您应该更改 Locale。但您只能在 <s:iterator> 标签中打印它们。您应该知道如何从 JSP 中的 Locale 获取当前的 ActionContext。 然后在更改之前将当前区域设置保存到变量中 <s:set var = "old_locale" value = "%{#context.locale}" /> <!-- then change a current locale --> <s:set var = "%{#context.locale}" value = "%{new java.util.Locale("en", "US")" /> <!-- print numbers with a new locale --> <s:iterator begin="1" end="3"> <s:property value="top"/>, </s:iterator> <!-- then return a current locale back --> <s:set var = "%{#context.locale}" value = "%{#old_locale}" />

回答 1 投票 0

重写 Struts 2 jqGrid CSS

我一直坚持覆盖网格的默认 struts2-jquery-plugin 样式表。我尝试定义自己的样式表 (jquery-ui-grid.css) 并将其包含在我的 JSP 页面上,但框架始终

回答 1 投票 0

i18n 在下拉菜单上使用 s:select 标签[重复]

我的 JSP 页面中有一个下拉菜单,它是用 标签实现的,如下所示 我的 JSP 页面中有一个下拉菜单,它是使用 <s:select> 标签实现的,如下所示 <s:select name="priorToApplyingInfo.userProfile.phoneNumbers[0].type" listKey="key" listValue="value" list="phoneTypes" headerKey="0" headerValue=""/> 现在下拉菜单中的值来自列表 phonetypes,该列表在 HashMap 文件中作为 .java 实现。 phoneTypes = new LinkedHashMap<Integer, String>(); phoneTypes.put(new Integer(1), getText("HOME")); // Phone ContactBook category for the business phone phoneTypes.put(new Integer(DAOHelperFactory.OWNER_PROFILE_PHONE_CATEGORY), getText("WORK")); phoneTypes.put(new Integer(3), getText("MOBILE")); phoneTypes.put(new Integer(DAOHelperFactory.OWNER_PROFILE_FAX_CATEGORY), getText("FAX")); phoneTypes.put(new Integer(5), getText("OTHER")); preferredContact = new ArrayList<String>(); preferredContact.add(getText("HOME")); preferredContact.add(getText("WORK")); preferredContact.add(getText("MOBILE")); preferredContact.add(getText("FAX")); preferredContact.add(getText("EMAIL")); preferredContact.add(getText("OTHER")); bestContactTime = new ArrayList<String>(); bestContactTime.add(getText("AFTERNOON")); bestContactTime.add(getText("EVENING")); bestContactTime.add(getText("MORNING")); 诸如 home=home、work=work 等键位于 .properties 文件中 我正在努力国际化此页面,但我无法找到获取翻译的方法 下拉菜单中的值。 要更改 Struts2 应用程序中的区域设置,您需要将 requst_locale 参数包含到某些链接或表单中。 <s:url var="urlen" includeParams="all" value=""> <s:param name="request_locale">en</s:param> </s:url> <s:a href="%{#urlen}">English</s:a> 如果您想从操作类更改区域设置,请使用 ActionContext 进行设置并将其放入 HTTP 会话中。 ActionContext.getContext().setLocale(locale); session.put(I18nInterceptor.DEFAULT_SESSION_ATTRIBUTE, locale); 您也可以在 JSP 中的 getText 标签的 listValue 属性中调用 <s:select> 方法。 <s:select name="priorToApplyingInfo.userProfile.phoneNumbers[0].type" list="phoneTypes" headerKey="0" headerValue="" listKey="key" listValue="%{getText(value)}"/> 对我来说工作(就像 Aleksandr M 在上一段中写的那样): <s:select listValue="%{getText(value)}" listKey="key" list="phoneTypes></s:select> 只有我创造 phoneTypes = new HashMap<String, String>() phoneTypes.put("HOME", "HOME") phoneTypes.put("WORK", "WORK") etc.. 在这种情况下,键被省略(您可以在此处编写任何内容)并在页面上显示(翻译)值。 此解决方案不适用于列表,仅适用于地图。 在从资源中检索消息之前,您没有切换 Struts2 中的区域设置。 getText() 是本地化方法,如果它使用默认文本提供程序作为默认行为,那么它会搜索区域设置特定的键。您可以从操作上下文或直接从 ActionSupport 操作获取 Struts2 使用的当前语言环境(还没有看到您有一个操作并且它扩展了它)。 通常切换区域设置是通过 i18n 拦截器完成的,您可以在其中将参数放入请求中 request_locale。但是您可以通过更改操作上下文中的区域设置来切换它(确保您正在运行与当前相同的线程)。 ActionContext.getContext().setLocale(new Locale("es")); 您应该在执行任何 getText() 之前运行此代码以获取本地化消息。

回答 3 投票 0

如何在JSP中调用Date

在一切之前,我到处寻找,甚至找到了任何东西,但没有成功。 所以,我的问题是: 我有 inicio.jsp: 在一切之前,我到处寻找,甚至找到了任何东西,但没有成功。 所以,我的问题是: 我有 inicio.jsp: <td><s:textfield name="dataInicio" id="redimensiona_inputs" type="text" /> </td> <td><s:textfield name="dataFim" id="redimensiona_inputs" type="text" /> </td> RelatorioServiceFacadeImpl.java: public String gerarRelatorioTipoFuncional() { List<RelAplicacaoTipoFuncionalVO> listRelatorio = relatorioServiceFacade.relTipoFuncional(aplicacao, gestor, dataInicio, dataFim); if (null == listRelatorio || listRelatorio.isEmpty()) { addActionError(getText("msg.erro.campo.obrigatorio", new String[] { "existem campos vazios" })); } return SUCCESS; } RelatorioAction.java: private boolean validaCampos(String aplicacao, String gestor, Date dataInicio, Date dataFim) { if (gestor.isEmpty() || gestor == null) { return false; } if (dataInicio.equals(null)) { return false; } if (dataFim.equals(null)) { return false; } if (dataInicio.after(dataFim)){ return false; } return true; } 返回此:Invalid date format。 您可以查看如何格式化日期:格式化日期和数字。格式化日期时将使用操作上下文的区域设置。 适当的 en_US 格式定义扩展可能如下所示: format.date = {0,date,MM/dd/yy} <s:textfield key="dueDate" value="%{getFormatted('format.date','dueDate')}" />

回答 1 投票 0

struts2的property标签属性在struts2版本2.3.32无法解析value="(new java.text.SimpleDateFormat("").format())"

我在将Struts2从版本2.3.15更新到2.3.32时遇到了这个问题。在版本 2.3.32 中,无法解析,a...

回答 1 投票 0

Struts 2 中的 ModuleConfig 和 PluginConfig

我正在从事 Struts 2 迁移工作。我的 Struts 1 应用程序正在使用 ModuleConfig 和 PlugInConfig 类。如何在 Struts 2 中使用这些类?

回答 1 投票 0

如何在 Struts 2 中将 JSON 绑定到 bean

嗯,我想对 Struts 2 操作进行 Ajax 调用,因此我想将带有 Employee bean 的特定 id 的 JSON 从客户端发送到服务器。 问题是它应该如何构建......

回答 2 投票 0

在 Struts 2 中使用 ModelDriven 访问 POJO 属性?

我在 Struts 2 中使用 ModelDriven,这样我的模型对象内部就有另一个具有属性的对象。我正在进行 AJAX 调用,并希望我的模型对象由用户填充。 联合应用程序: 我在 Struts 2 中使用 ModelDriven,这样我的模型对象内部就有另一个具有属性的对象。我正在进行 AJAX 调用,并希望我的模型对象由 User 填充。 JSP: <s:select list="#session.circleIdNameMap" headerKey="-1" headerValue="Select Circle" name="id.circleId" id="selectCircleDropDown" onchange="findTspNameIdMap(this.value)"> </s:select> JS: $.ajax({ type: 'POST', url: '/gma/findTspNameIdMap.action', data: { id.circleId: circleId, minNumberOc: $("[name='minNumberOc']").val(), minDurationOc: $("[name='minDurationOc']").val(), }, 但是,在 firebug 中我收到错误 SyntaxError: missing : after property id id.circleId: circleId, 但其他直接属性如minNumberOc工作正常,但不是id.anything。我正在发布我的模型对象和 Action 类。 GmaThreshold参数: public class GmaThresholdParameter implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId private GmaThresholdParameterPK id; //getter/setters of id GmaThresholdParameterPK: public class GmaThresholdParameterPK implements Serializable { private static final long serialVersionUID = 1L; @Column(name="CIRCLE_ID") private int circleId; @Column(name="TSP_ID") private int tspId; private String flag; //getter/setters 动作类: public class ConfigureTspThresholdAction extends ActionSupport implements SessionAware, ModelDriven<GmaThresholdParameter>{ private Map<String,String> circleIdNameMap; // MODEL object GmaThresholdParameter gmaThresholdParameters = new GmaThresholdParameter(); ..... ... public GmaThresholdParameter getGmaThresholdParameters() { return gmaThresholdParameters; } public void setGmaThresholdParameters( GmaThresholdParameter gmaThresholdParameters) { this.gmaThresholdParameters = gmaThresholdParameters; } @Override public GmaThresholdParameter getModel() { return gmaThresholdParameters; } 如何设置id对应的属性?为什么 Firebug 会报错? 为什么Firebug会报错? 因为下面的语句后面有一个逗号 minDurationOc: $("[name='minDurationOc']").val(),

回答 1 投票 0

如何在每个 jQuery DataTable 行中使用参数调用 Struts 2 操作

我在使用 Struts2 的 JAVAEE 项目中工作,我正在使用 jQuery DataTable,我想在每一行中添加一个链接来调用带有 id 的操作。 这是 HTML 代码: 我在使用 Struts2 的 JAVAEE 项目中工作,我正在使用 jQuery DataTable,我想在每一行中添加一个链接,以使用 id 调用操作。 这是 HTML 代码: <div class="table-responsive"> <div id="dataTables-example_wrapper" class="dataTables_wrapper form-inline" role="grid"> <table class="table table-striped table-bordered table-hover dataTable no-footer" id="matable" aria-describedby="dataTables-example_info"> <thead> <tr> <th>Libellé planing</th> <th>Nom de la classe</th> <th>Actions</th> </tr> </thead> </table> </div> </div> 这就是我如何使用 AJAX 推送数据: $(document).ready( function() { // recuperation des ressources $.ajax({ url : "listPlaning", type : 'GET', dataType : 'json', contentType : 'application/json', mimeType : 'application/json', success : function(msg) { for ( var i in msg) { $("#matable").dataTable() .fnAddData( [ msg[i].libellePlanning, msg[i].classe, //this code doesn't work "<s:url var='test' action='action'><s:param name='id'>"+msg[i].idPlaning+"</s:param></s:url>" ]); } }, error : function(error) { }, complete : function(x) { } }); }); 我不知道如何用<a href="">调用动作,我尝试放置struts2标签,但它不起作用。 有人可以帮我吗 您可以尝试相对URL 'test.action?id='+msg[i].idPlaning

回答 1 投票 0

无法从数据库获取数据

请看下面的代码: 主题: 请参阅下面的代码: <label>Subject:</label> <s:select onchange = "form1.submit();" theme = "simple" list = "#{'':'All','E':'English','M':'Maths','S':'Science','H':'Humanities'}" name = "Subject" id = "Subject" /> 但是当我在页面加载时将下拉列表更改为 E(English) 时,下拉列表更改为 ALL 并且数据也不显示。 当您将下拉菜单更改为 E(English) 时,会发生 change 事件,并且您已使用 onchange 事件处理程序将表单提交到服务器。 服务器将页面返回给客户端,但它不知道应该设置的值,因为它尚未设置。 您应该更改事件处理程序以至少不通过序号请求提交表单,或者使用 Ajax 发送数据,或者为命名字段创建 getter 和 setter 以保存列表中键的值。 此外,您不能使用空键作为列表的值,因为它与所选键不匹配。 您还可以使用 value 标签的 <s:select> 属性从列表中预先选择值。

回答 1 投票 0

Struts2 + Bootstrap 数据表:如何在不加载所有数据的情况下分页

我正在使用 Struts2 框架的一些应用程序中工作,在操作中,我在某个列表中加载我们需要的所有数据,然后在 JSP 文件中该列表被迭代并显示在中 我正在使用 Struts2 框架的一些应用程序中工作,在操作中我加载了一些List<Object>中我们需要的所有数据,然后在 JSP 文件中使用引导框架迭代此列表并显示在数据表中。 这工作正常,但我知道如何在不加载生成的 HTML 中的完整数据的情况下执行此操作,就像我有 1.000.000(一百万)条记录一样。 我不希望所有记录都在 JSP 生成的 HTML 输出中,只有第 10 条记录,然后通过分页加载(使用 jQuery?)数据集的其余部分(如果需要)。 添加 Enrique San Martín 的评论:http://legacy.datatables.net/usage/server-side 任何好的例子都应该使用 iDisplayStart 和 iDisplayLength 参数,当然还有 "bServerSide": true 的 datatable() 属性。 这里是博客文章的链接:使用 Ajax 将 jQuery Datatable 与 Struts2 操作类结合使用。 最好的方法是在 DAO 中创建一个具有附加参数 start 和 end 的方法,例如: getCustomers( int start,int end){ // get all customers // sublist the result and get the data from start index to end index } 在您的控制器中,您将执行几乎相同的操作,并且您将通过 start 或 end 请求 给出 POST 和 GET 参数 @RequestMapping(value = "/sublistedCustomers", method = RequestMethod.GET) public String getSublistedCustomers(@RequestParam("start") final int start,@RequestParam("end") final int end){ model.addAttribute("cutomersResult",yourDAO.getCustomers(start,end)); } 现在您的 JSP 文件中有一部分客户记录,由您决定如何显示此子列表结果。 嗯,这是一些很好的方法,但我必须将 request.getParameter 转换为 Struts 变量(声明为 privated,然后生成 getters 和 setters): 来自: https://datatables.net/development/server-side/jsp 编辑:此链接有一些 request.gP 以及数据表中的旧值,而我们必须使用以下参数: https://datatables.net/manual/server-side#Sent-parameters 就像一个动作: private String draw; private String length; private String order; private String search; private String start; getters&setters{} //or make it public 然后在ajax调用的actionMethod中对数据库进行查询并返回数据集。 当我使用 struts2+datatables 进行完整分页时,我将编辑这个答案, 数据表中有一些必要的配置(请参阅datatables.net中的文档): <script> $(document).ready( function() { $('#datatable').dataTable( { "iDisplayLength": 5, "processing": true, "serverSide": true, "ajax": "paginateTableAction" } ); } ); </script>

回答 3 投票 0

Struts2 jQuery 插件 - 提交按钮

我有 Struts 2 jQuery 插件提交按钮,当单击该按钮时,它不会像 Struts 提交按钮那样触发操作类。单击按钮后我需要保持同一页面。请查看下面...

回答 2 投票 0

Struts 2 Web 应用程序的菜单布局和 iframe 内容结构正确吗?

我继承了一个 Struts 2/JSP web 应用程序,但遇到了一些问题,我想知道它的结构/分层是否正确。登录后,用户位于主屏幕仪表板,如下所示: 我继承了一个 Struts 2/JSP web 应用程序,但遇到了一些问题,我想知道它的结构/分层是否正确。登录后,用户位于主屏幕dashboard,如下所示: <s:form action="HomePage" name="formHomePage" method="post"> <s:hidden name="selectedMenuItem" id="selectedMenuItem"/> <div id="layout"> <!-- HEADER --> <div class="header" style="position:fixed; z-index:1;"> ... Header bar ... </div> <!-- LEFT MENU --> <div class="left"> <h3>Menu</h3> <li id="dashboard">Dashboard</li> <li id="projectList">Projects</li>f <li id="userList">Users</li> </ul> </div> <!-- MAIN CONTENT --> <div class="center"> <iframe id="ifrmContent" name="contentFrame" src=""> </iframe> </div> <!-- FOOTER --> <div class="footer" style="position:fixed; z-index:1;"> .... Footer bar ... </div> </div> </s:form> 当用户单击菜单项时,将执行此(伪)代码: $(..menuItem..).click(function(index,o) { $("#selectedMenuItem").val(menuItemID); // 'Submit' this main frame to load the content JSP through the action formHomePage.target="contentFrame"; formHomePage.submit(); }); HomePage 操作读取 selectedMenuItem Struts 变量,并返回 struts.xml 映射到正确 JSP 的结果,如 ProjectList.jsp 或 UserList.jsp。这个带有页眉/页脚/左侧菜单的HomePage始终保留在浏览器中,只有 iframe 中的中间内容被用户想要的内容替换。我认为这是合理的,但我已经阅读了如何尽可能避免使用 iframe。这个结构的一个问题是在我写的另一个问题中提出的: 使用 Struts 2 的调试器中的操作名称/URL 名称 另一个问题是,当用户单击菜单项时,Chrome 调试器不会刷新 JSP/javascript 源文件。如果我放一个调试器; $(window).load();中的语句它将使用断点,但它显示原始仪表板源文件中的随机位置,而不是实际执行的文件/javascript。 Chrome 缓存已禁用,但调试器拒绝加载新的源文件。 那么这就是 Struts/JSP 的布局和结构吗?有没有比 iframe 更好的方法来仅加载页面的内容“部分”?我认为应该避免整页刷新以提高效率。为什么 Chrome 调试器不能正确处理这个问题? 无需使用iframe来加载内容。如果您想留在页面上并更新结果 div 中的内容,可以使用 Ajax。 <div id="resultDiv" class="center"> Initial content </div> 脚本将类似于 $(..menuItem..).click(function(index,o) { $("#selectedMenuItem").val(menuItemID); // 'Submit' this form to load the content to the resultDiv on this JSP through the action $.post($("form").attr("action"), $("form").serialize(),function(result) { $("resultDiv").html(result); }); });

回答 1 投票 0

在提交表单时加载选项卡式面板的相同选项卡

使用Struts2和JQuery。每个表单都有选项卡面板和提交按钮。 提交时,它转发到与选项卡式面板不同的 jsp。 我的要求是 1. tab1 ---- > 提交...

回答 1 投票 0

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