struts2 相关问题

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

如何在 Struts 2 中使用通配符创建动态结果?

在我的 struts.xml 中,遵循一个约定来调用特定操作类的操作,如下所示: struts.xml: 在我的struts.xml中,遵循一个约定来调用特定操作类的操作,如下所示: struts.xml: <package name="cdot.oss.cmsat.gma.struts" extends="struts-default" namespace="/"> <action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}"> <result name="display">pages/ConfigureTspThresholdInput.jsp</result> </action> </package> 我通过通配符获取方法名称,ConfigureTspThresholdAction是类名。 我正在使用 struts2-json-plugin 将数据转换为 JSON。现在,对于某些操作,我想使用 Struts2 JSON 插件返回 JSON 数据。 所以,我需要使用 extends json-default 和结果类型 json 来执行如下操作: <action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}"> <result type="json"> <param name="excludeProperties"> tspNameIdMap </param> </result> </action> <action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}"> <result type="json"> <param name="excludeProperties"> thresholdParameters </param> </result> </action> 如此不同 exclude-properties 具有相同的结果类型 json . 如何使这些 JSON 结果类型符合遵循的约定? 最后两个操作会发生冲突,因为它们具有相同的结果类型json? 我要做的是在你的操作类中创建一个属性myexcludedProperties 然后在你的操作方法中,设置这个myexcludedProperties 然后将您的操作映射更改为 <action name="*ConfigureTspThreshold" class="cdot.oss.cmsat.gma.struts.ConfigureTspThresholdAction" method="{1}"> <result type="json"> <param name="excludeProperties"> ${myexcludedProperties} </param> </result> </action> 我相信${myexcludedProperties}是正确的语法。 如果您不想编写属性代码,则必须弄清楚如何区分请求(method="{1}"),以便您可以设置正确的参数。 希望这是有道理的。 其中一个选项是在结果配置中使用动态参数。在执行结果之前,您始终可以在操作中修改结果。看看这个答案。 您可以将动态参数与结果一起使用,请参阅动态结果配置。 在操作中你应该为参数编写一个 getter private String actionUrl; public String getActionUrl() { return actionUrl; } 并配置结果 <action name="create" class="CreateAction"> <result type="redirect">${actionUrl}</result> </action>

回答 2 投票 0

从 Struts 2.3.12 迁移到 2.3.20 后,操作映射不起作用

目前我在我的项目中使用Struts 2.3.12,一切工作正常。 现在,我需要将Struts版本升级到2.3.20以解决一些安全问题。 我改变了Struts...

回答 3 投票 0

UTF-8 编码和 Struts 2.1.7

根据标题,我遇到了 UTF-8 字符集编码问题。我看到了?而不是波兰语的特殊字符。 我会尝试解释我的问题。 我有一个包含以下代码的 JSP 页面: <%@ page

回答 1 投票 0

在 Struts 2 中使用 JavaScript 加载 Ajax 内容

我在 Struts 2 中通过 Ajax 调用加载内容时遇到一个简单的问题(使用 Struts2 Dojo 插件)。它正在正确加载页面中的所有 HTML 内容,但如果有任何内联

回答 2 投票 0

如何将 URL 中以逗号分隔的值列表转换为 Struts 2 中操作类中定义的 ArrayList?

www.abcd.com/user/getuserstats.htm?userId=123123 在此 API 中,userId 设置为映射到此操作的 Action 类中名为 userId 的字段。 现在,为了这个 www.abcd.com/user/getuserstats.htm?

回答 2 投票 0

将字符串列表映射到操作类中定义的 ArrayList - Struts2

www.abcd.com/user/getuserstats.htm?userId=123123 在此 API 中,userId 设置为映射到此操作的 Action 类中名为 userId 的字段。 现在,为了这个 www.abcd.com/user/getuserstats.htm?

回答 2 投票 0

Struts 2中动作重定向结果后如何获取动作消息?

我正在使用 Struts 2 框架(带注释),我需要帮助才能使用重定向。 步骤1:动作类扩展ActionSupport,在execute()方法中添加动作消息。关于

回答 1 投票 0

如何在Struts 2中设置资源包位置?

我当前的类路径上有一个名为 MyResources 的包,其中包含 Struts 使用的多个属性文件。 效果很好: 我的类路径上目前有一个名为 MyResources 的包,其中包含 Struts 使用的多个属性文件。 效果很好: <constant name="struts.custom.i18n.resources" value="com.company.MyResources"/> 我正在尝试将属性文件移动到文件位置,以便可以更新它们而无需重建包。 Struts 2 中是否可以引用该文件位置? 例如,我的属性文件的新位置是: /g01/properties/ 我希望 Struts 使用该位置来获取资源。 是的,通过提供 ResourceBundleTextProvider 的实现并在 struts.xml 配置文件中初始化它。 默认实现,com.opensymphony.xwork2.TextProviderSupport将文本查找推迟到com.opensymphony.xwork2.util.LocalizedTextUtil。 有多种方法可以实现此目的,但如果您不需要任何默认的 S2 行为,可以从这里开始: <bean type="com.opensymphony.xwork2.TextProvider" name="struts" class="com.opensymphony.xwork2.TextProviderSupport" scope="default" /> 提供您自己的 ResourceBundleTextProvider 实现,使用您想要的任何配置管理,例如,我们实现了一个数据库支持的版本(当然带有缓存),允许翻译存在于普通数据库和 I18N 中并由其管理前端。 我会看看这个周末是否可以挖掘我的原创作品并提供一个精简解决方案的链接。 运行应用程序时,文件的位置不能偏离类路径。您应该确定使用哪个类加载器来加载资源。然后,您应该找到一种方法来配置此类加载器,以便能够使用该位置作为资源。所以,这是可能的。一个简短的回答。

回答 2 投票 0

如何在Struts 2中实现相当于<html:cancel>标签的功能?

我正在将应用程序从 Struts 1 迁移到 Struts 2。 在 Struts 1 中,我们有 标签可以在单击时绕过表单 bean 的 validate() 方法。 但在 Struts 2 中,我不知道有任何

回答 1 投票 0

如何在 Struts 2 中使用数据库中的 <s:select> 标签填充下拉列表?

我想使用下拉菜单并从数据库中获取下拉菜单中的值,下拉菜单应包含公司代码,用于保存目的和公司描述以供显示。 下面我...

回答 2 投票 0

如何在 Struts 2 中从数据库填充下拉菜单 `<s:select>`?

我想使用下拉菜单并从数据库中获取下拉菜单中的值,下拉菜单应包含公司代码,用于保存目的和公司描述以供显示。 下面我...

回答 2 投票 0

如何在带有 Tiles 的 Struts 2 中隐藏/显示 <div> 使用 JavaScript?

我正在开发一个使用 Struts 2 和 Tiles 3 的 JSP 站点,它有不同的选项卡,每个选项卡都显示一个带有表格的 。我需要添加一个包含 2 个表格的选项卡,或者显示一个或 我正在开发一个使用 Struts 2 和 Tiles 3 的 JSP 站点,它有不同的选项卡,每个选项卡都显示一个带有表格的 <div>。我需要添加一个包含 2 个表格的选项卡,并根据按钮显示其中一个或另一个。 是否可以通过JS以某种方式显示/隐藏它们?我已经尝试了一段时间了,Tiles 似乎并不关心我在 JS 中所做的事情。 我一直在使用这个,有一些变化,但到目前为止还没有运气。我对 JS 有点陌生,所以我可能做错了什么,或者 Tiles 有一种方法可以动态/在运行时隐藏/显示我不知道的东西。 document.getElementById('controlPools').style.display='none'; document.getElementById('controlPools').style.display='inline'; controlPools 是 div 的名称,包含它的图块的名称是 controlPool。 这是JSP页面的代码 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="s" uri="/struts-tags"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <%@ taglib uri="http://displaytag.sf.net" prefix="display"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <body> <fieldset> <div id="controlPools"> <display:table name="lstPools" class="displaytag" id="tablaPools" > <display:column style="width: 90%" > <a href="javascript:getNodosPool('${tablaPools.name}')" >${tablaPools.name}</a> </display:column> <display:column style="width: 10%" property="nodes"/> </display:table> </div> <div id="nodosPool" style="display: none;" > <display:table name="lstMembers" class="displaytag" id="tablaNodesPool"> <display:column style="width: 5%" > <input type="checkbox" id="${tablaNodesPool.name}" class="node" value="${tablaNodesPool.name}" style="margin: 0 0 0 4px" /> </display:column> <display:column title="Status CBS" style="width: 10%"> <div id="iconStatus" class="${tablaNodesPool.classStatus}" /></div> </display:column> <display:column title="Status STF" style="width: 10%"> <div id="iconStatus" class="${tablaNodesPool.classStatus2}" /></div> </display:column> <display:column property="name" /> <display:column property="ip" /> <display:column property="description" /> </display:table> <button onclick="enableNodesPool();" ><s:text name="controlSnmp.enableSelected"/></button> <button onclick="disableNodesPool();" ><s:text name="controlSnmp.disableSelected"/></button> <button onclick="getNodosPool();"><s:text name="controlSnmp.buttonRefresh"/></button> </div> </fieldset> </body> <script> </script> Tiles 与客户端无关,因此如果您使用 JS 代码执行某些操作,那么您已经在使用 DOM,但此文档可以使用tiles 结果进行渲染。不管怎样,它只会改变你需要修改的正确样式,以使用一些 JS 函数显示/隐藏一些 html 内容 隐藏: document.getElementById('controlPools').style.display='none'; 显示: document.getElementById('controlPools').style.display='block'; @Roman-C 的答案让我思考,它引导我找到了问题的解决方案,部分原因是瓷砖。 我使用这个 JS 块将数据提供给我的 JSP: document.getElementById('controlPools').style.display='none'; $.ajax({ type : "GET", url : "ControlNodesPoolAct.action", data : {"pool": pool}, success : function(result){ if (result != null && result.length > 0){ var aux = $("#tabs-11"); aux.html(result); //inicializamos la tabla con el plugin de jquery $('#tablaNodesPool').DataTable( { "lengthMenu": [[150, 75, 10, -1], [150, 75, 10, "All"]] } ); spinner.stop(); document.getElementById('poolLegend').innerHTML=pool; } }, error : function(xhr, errmsg) { console.log("error en funcion getMiembrosSnmp " + errmsg); spinner.stop(); } }); 显然,由于 DisplayTags 在运行时渲染它,因此在调用函数时 div 不存在,因此我需要等到 DisplayTags 渲染表格才能使 div 存在。我移动了document.getElementById('controlPools').style.display='none'; 到了我知道表格已渲染并且似乎解决了问题的程度。 此更改修复了它: $.ajax({ type : "GET", url : "ControlNodesPoolAct.action", data : {"pool": pool}, success : function(result){ if (result != null && result.length > 0){ var aux = $("#tabs-11"); aux.html(result); //inicializamos la tabla con el plugin de jquery $('#tablaNodesPool').DataTable( { "lengthMenu": [[150, 75, 10, -1], [150, 75, 10, "All"]] } ); spinner.stop(); document.getElementById('controlPools').style.display='none'; document.getElementById('poolLegend').innerHTML=pool; } }, error : function(xhr, errmsg) { console.log("error en funcion getMiembrosSnmp " + errmsg); spinner.stop(); } });

回答 2 投票 0

如何在 Struts 2 中实现 HTML:cancel 的等效功能?

我正在将应用程序从 Struts 1 迁移到 Struts 2。 在 Struts 1 中,我们有 标签可以在单击时绕过表单 bean 的 validate() 方法。 但在 Struts 2 中,我不知道有任何

回答 1 投票 0

如何在 OGNL 中使用点('.')来绑定 Struts 2 中的输入字段?

我试图理解其他人的 Struts 2 代码,但遇到了数据传递问题。 我知道在 JSP 页面上,如果您使用 标签,那么...

回答 4 投票 0

如何使用Struts 2中的achor标签发送值?

如何在Struts2中使用(锚标记)发送值?请给我一个例子,我知道我们可以使用 标签来实现这一点,但我希望使用锚标签。

回答 2 投票 0

如何在Struts 2中上传大文件

我想上传大量图像文件(最大大小10mb)。 为此,我使用以下配置:struts.xml: 我想上传大量图像文件(最大大小10mb)。 为此,我使用以下配置:struts.xml: <interceptors> <interceptor-stack name="fileUploadStack"> <interceptor-ref name="exception" /> <interceptor-ref name="alias" /> <interceptor-ref name="servletConfig" /> <interceptor-ref name="prepare" /> <interceptor-ref name="i18n" /> <interceptor-ref name="chain" /> <interceptor-ref name="debugging" /> <interceptor-ref name="profiling" /> <interceptor-ref name="scopedModelDriven" /> <interceptor-ref name="modelDriven" /> <interceptor-ref name="fileUpload"> <param name="maximumSize">10485760</param> <param name="allowedTypes">image/jpg,image/jpeg,image/gif,image/png,image/pjpeg</param> </interceptor-ref> <interceptor-ref name="checkbox" /> <interceptor-ref name="staticParams" /> <interceptor-ref name="actionMappingParams" /> <interceptor-ref name="params"> <param name="excludeParams"> dojo\..*,^struts\..*</param> </interceptor-ref> <interceptor-ref name="conversionError" /> <interceptor-ref name="validation"> <param name="excludeMethods"> input,back,cancel,browse</param> </interceptor-ref> <interceptor-ref name="workflow"> <param name="excludeMethods"> input,back,cancel,browse</param> </interceptor-ref> </interceptor-stack> </interceptors> <action name="ownmessageswithimage" class="social.action.UserMessages" method="insertImage"> <result name="success">/pages/profile/userSingleMessage.jsp</result> <result name="input">/pages/errorpages/ajaxError.jsp</result> <result name="login">/pages/pleaselogin.jsp</result> </action> 编辑: 这是我的JSP文件代码: <script type="text/javascript" src="js/jquery.form.js"></script> <form id="own_message_post" action="ownmessageswithimage" method="post"> <input id="fileupload" type="file" name="user_post_image" data-url="ownmessages" /> <textarea name="message" rows="4" cols="45" id="text_message_status" ></textarea><br> <input type="submit" value="Post" id="submit_form_button" style="background:#004091;padding: 2px 20px 2px 20px;color: whitesmoke;font-weight: bold" /> </form> <script type="text/javascript"> $('#own_message_post').ajaxForm(function(data) { $('#fileupload').val(""); }); </script> 我正在使用异步文件上传脚本, 但问题是它不能上传最多 10 MB 的大文件。 如何使其成为可能? 您应该将常量添加到配置文件中以允许多部分内容大小达到 10M <constant name="struts.multipart.maxSize" value="10485760"/> 我不确定它是否有帮助,但我在客户端使用表单时使用了多部分加密来上传大文件。 这是从文件输入框中以表单形式发送一个文件。 不过我对 struts 不太确定。 似乎<param name="allowedTypes">image/jpg,image/jpeg,image/gif,image/png,image/pjpeg</param>只允许您上传此类类型的图像。在那里添加其他 MIME 类型,例如text/xml 或 任何其他类型

回答 3 投票 0

s:迭代器语法,另一个

我的第二个迭代器有语法问题。我想迭代 equalesParties 的值,但我似乎找不到正确的语法。 这是导致问题的标签:value="{

回答 2 投票 0

ognl.NoSuchPropertyException:org.apache.struts2.dispatcher.ServletActionRedirectResult.applicationId

我正在使用 Hibernate 3.0 和 Struts 2。我正在使用 @GenerateValue 来生成 id。 当我保存客户详细信息时,我有一个客户屏幕,我想移动到下一个屏幕 新

回答 2 投票 0

在Hibernate中获取插入的id是否有更好的方法?

我正在使用 Hibernate 3.0 和 Struts 2。我正在使用 @GenerateValue 来生成 id。 当我保存客户详细信息时,我有一个客户屏幕,我想移动到下一个屏幕 新

回答 2 投票 0

在 Struts 2 的同一页面上上传的文件详细信息

我可以使用Struts 2上传文件。 但我想在 Struts 2 中显示有关上传文件的详细信息(文件名、文件大小、文件类型)。 我正在尝试使用 我可以使用 Struts 2 上传文件。 但我想在 Struts 2 中显示有关上传文件的详细信息(Filename、filesize、filetype)。 我正在尝试使用 <s:property value="myFile" /> 标签获取详细信息, 但它总是显示[Object HTMLDocument]。 我的代码如下。 uploadfile.jsp: <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head> <body> <div id="success-image"> <s:property value="myFile" /> <s:head theme="ajax" /> <s:form id="asset-upload" name="asset-upload" action="uploadFile.action" method="POST" theme="ajax" enctype="multipart/form-data"> <s:file name="myFile" label="Upload Image"/> <s:submit targets="success-image" showLoadingText="false" indicator="uploading-image" id="asdf"/> </s:form> </div> </body> </html> struts.xml: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="false" /> <constant name="struts.multipart.maxSize" value="1000000000" /> <package name="default" extends="struts-default,json-default" namespace="/"> <action name="uploadFile" class="com.isam.struts.uploadFile"> <result name="success"> <param name="myFile">myFile</param> </result> <result name="error">login.jsp</result> </action> <action name="autoCompleterList" class="com.isam.struts.AutoCompleterList"> <result type="json" /> </action> </package> </struts> UploadFile.java: package com.isam.struts; import java.io.File; import java.io.IOException; import org.apache.commons.io.FileUtils; import com.opensymphony.xwork2.ActionSupport; public class uploadFile extends ActionSupport { private File myFile; private String myFileContentType; private String myFileFileName; private String destPath; public String execute() { /* Copy file to a safe location */ destPath = "C:/temp/"; try { System.out.println("Src File name: " + myFile); System.out.println("Dst File name: " + myFileFileName); File destFile = new File(destPath, myFileFileName); FileUtils.copyFile(myFile, destFile); } catch (IOException e) { e.printStackTrace(); return ERROR; } return SUCCESS; } public File getMyFile() { return myFile; } public void setMyFile(File myFile) { this.myFile = myFile; } public String getMyFileContentType() { return myFileContentType; } public void setMyFileContentType(String myFileContentType) { this.myFileContentType = myFileContentType; } public String getMyFileFileName() { return myFileFileName; } public void setMyFileFileName(String myFileFileName) { this.myFileFileName = myFileFileName; } } 那么我应该在JSP文件中添加什么来显示详细信息, 我需要在 struts.xml 文件中添加什么? 要在上传后在同一页面上显示文件详细信息,请将操作结果更改为: <action name="uploadFile" class="com.isam.struts.uploadFile"> <result name="success">uploadfile.jsp</result> <result name="error">login.jsp</result> </action> 在 JSP 中使用 <s:property> 标签来显示值: <s:property value="myFile.length()"/> <s:property value="myFileContentType"/> <s:property value="myFileFileName"/> 在uploadFile操作中,您需要放置信息的setter和getter以在结果中显示它。 public void setUpload(File myFile) { this.myFile= myFile; } public void setUploadContentType(String myFileContentType) { this.myFileContentType= myFileContentType; } public void setUploadFileName(String myFileFileName) { this.myFileFileName = myFileFileName; } public String getMyFileFileName() { return myFileFileName; } public String getMyFileSize() { return myFile.length(); } public String getMyFileContentType() { return myFileContentType; } 它为注入值命名,您可以使用这些值进一步显示 <s:property value="myFileName" /> <s:property value="myFileSize" /> <s:property value="myFileContentType" /> 如果文件有扩展名,您可以从myFile查看。如果它有图像类型,那么您应该应用编解码器来获取它和尺寸。然而,这不是必需的。获得 BufferedImage 后,您可以写入或缩放到任何图像类型或大小。 错误的是结果“成功”。结果应该是带有 id 图片参数的重定向操作的正常 URL,如果你想取回它,你必须再次加载它。

回答 2 投票 0

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