struts2 相关问题

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

如何在 Struts 2 中运行 junit 测试用例?

在 Struts2 中运行测试用例时,我收到此错误: java.lang.ClassFormatError:类文件 javax/servlet/jsp/PageContext 中非本机或抽象的方法中缺少代码属性...

回答 1 投票 0

如何使用 Struts 2 将查询字符串中的键/值对从一个页面传递到项目中的另一个页面?

我正在尝试使用 Struts 2 框架将查询字符串中的键/值对从一个页面传递到项目中的另一个页面。 网址映射: 我正在尝试使用 Struts 2 框架将查询字符串中的键/值对从一个页面传递到项目中的另一个页面。 URL 映射: <struts> <package name="default" namespace="/" extends="struts-default"> <!-- Line --> <action name="line" class="com.example.a.b.action.LineAction"> <result name="success">/line.jsp</result> </action> </package> </struts> HTML 锚链接的 URL: http://localhost/line?key=value 当它转到LineAction时,我想获取查询字符串键/值对,但在网上找不到任何东西。 如果我理解正确的话。在您的动作类中,为 Getters 创建 Setters 和 key。您将在您的操作类中获得一个值。 也许你可以尝试这种方式.. try{ URL url = new URL("http://www.google.com?gender=male&name=jagga"); System.out.println(url.getQuery()); }catch(MalformedURLException e) { e.printStackTrace(); } 您构建该操作的 URL 您可以从操作上下文中获取参数,例如 Map<String, Object> parameters = ActionContext.getContext().getParameters(); 但是更好的方法是实施ParameterAware private Map<String, String[]> parameters; public void setParameters(Map<String, String[]> parameters){ this.parameters = parameters; }

回答 2 投票 0

错误 [Jsr168Dispatcher:38] 找不到操作 没有为操作名称默认映射的操作。 - [未知地点]

我在运行 Portlet 应用程序时遇到问题。 我有这个错误: 错误 [Jsr168Dispatcher:38] 找不到操作 没有为操作名称默认映射的操作。 - [未知位置] 我是

回答 1 投票 0

如何在Struts 2 <s:iterator>标签中添加条件?

我想在评级值小于或等于 2 时突出显示一行。我无法使用 标签来获取结果。请告诉我如何在 JSP 页面中添加条件? <...

回答 4 投票 0

如何在Struts 2 <s:if>标签中添加条件?

我想在评级值小于或等于 2 时突出显示一行。我无法使用 标签来获取结果。请告诉我如何在 JSP 页面中添加条件? <...

回答 4 投票 0

请求的列表键“国家”无法解析为集合/数组/映射/枚举/迭代器类型。示例:人或人。{name}

我有一个需要使用 Struts 2 标签填充的下拉列表。 我有一个需要使用 Struts 2 <s:select> 标签填充的下拉列表。 <s:select label="Country" headerKey="-1" headerValue="Select Country" list="countries" listKey="key" listValue="label" name="searchForm.custCountry"/> 在我的操作类中,我有以下声明,后跟 getter 和 setter。 ArrayList<DropDown> countries = new ArrayList<DropDown>(); 我遇到了以下异常。 错在哪里? SEVERE: Servlet.service() for servlet jsp threw exception tag 'select', field 'list', name 'searchForm.custCountry': The requested list key 'countries' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [unknown location] at org.apache.struts2.components.Component.fieldError(Component.java:240) at org.apache.struts2.components.Component.findValue(Component.java:333) at org.apache.struts2.components.ListUIBean.evaluateExtraParams(ListUIBean.java:80) at org.apache.struts2.components.Select.evaluateExtraParams(Select.java:105) at org.apache.struts2.components.UIBean.evaluateParams(UIBean.java:902) at org.apache.struts2.components.UIBean.end(UIBean.java:544) at org.apache.struts2.views.jsp.ComponentTagSupport.doEndTag(ComponentTagSupport.java:42) at org.apache.jsp.accountSearchDtls_jsp._jspx_meth_s_005fselect_005f0(accountSearchDtls_jsp.java:979) at org.apache.jsp.accountSearchDtls_jsp._jspx_meth_s_005fdiv_005f0(accountSearchDtls_jsp.java:935) at org.apache.jsp.accountSearchDtls_jsp._jspService(accountSearchDtls_jsp.java:521) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) at javax.servlet.http.HttpServlet.service(HttpServlet.java:723) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:96) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) at java.lang.Thread.run(Thread.java:745) 这是我获取下拉列表数据的方法。我想这已经足够了,如果不让我知道的话。 public ArrayList<DropDown> getCountrydd() { ArrayList<DropDown> countrydd = new ArrayList<DropDown>(); try { OraConn conn = new OraConn(); conn.getConnection(); cstmt = conn.setProc("call mgm.getCountry(?)"); cstmt.registerOutParameter(1, OracleTypes.CURSOR); cstmt.execute(); rs = (OracleResultSet)cstmt.getObject(1); countrydd = rsToDropDown(rs); } catch (Exception e) { e.printStackTrace(); //log.error("***getDSdropdowns*** "); } finally { closeORAConnection(); } return countrydd; } 您需要更改代码来填充列表 public ArrayList<DropDown> getCountrydd() { List<DropDown> countrydd = new ArrayList<DropDown>(); OraConn oraConn = new OraConn(); Connection conn = null; CallableStatement cstmt = null; ResultSet rs = null; try { conn = oraConn.getConnection(); cstmt = conn.prepareCall("{call mgm.getCountry(?)}"); cstmt.registerOutParameter(1, OracleTypes.CURSOR); cstmt.executeUpdate(); rs = (ResultSet)cstmt.getObject(1); rsToDropDown(rs, countrydd); } catch (Exception e) { e.printStackTrace(); //log.error("***getDSdropdowns*** "); } finally { if (rs != null) rs.close(); if (cstmt!= null) cstmt.close(); if (conn != null) conn.close(); } return countrydd; } 我发现即使用户为空,我也会用国家/地区值填充组合框或下拉列表,因此,当我单击“创建新用户”按钮时,我得到了这些异常。现在我更改了代码,这就是现在的样子: public String getProfile() throws Exception { user_name =(String) sessionMap.get("userid") ; MgmService service = new MgmService(); userForm = new User(); userForm = service.getUsersProfile(user_name); if(searched_user_name!=null){ userForm = service.getUsersProfile(searched_user_name); countries= service.getCountrydd(); //This keep the content of the combobox by default on the list return "createEditUser"; } else if(userForm!=null) { return "success"; } else { addActionError("Invalid Login."); return "success"; } } 这是我之前的错误代码...... public String getProfile() throws Exception { user_name =(String) sessionMap.get("userid") ; MgmService service = new MgmService(); userForm = new User(); userForm = service.getUsersProfile(user_name); countries= service.getCountrydd(); //This keep the content of the combobox by default on the list if(searched_user_name!=null){ userForm = service.getUsersProfile(searched_user_name); return "createEditUser"; } else if(userForm!=null) { return "success"; } else { addActionError("Invalid Login."); return "success"; } }

回答 2 投票 0

JDBCExceptionReporter - SQL 错误:17008,SQLState:08003

我在获取记录时遇到以下错误及其偶发性,它可以通过重新启动服务器或在一段时间后自行修复。我正在使用 Struts 2、Oracle 11g、Hibernate 3。 错误: 20...

回答 1 投票 0

请求无法使用 Struts 2 中的 StrutsTestCase 实现解决错误

我正在使用 Struts 2 创建一个 Web 应用程序。我正在使用 StrutsTestCase 作为 Junit 测试用例来测试 Action 类。 我已经导入了 struts2-junit-plugin-2.3.4.jar 因为我正在使用 struts2-core-2....

回答 2 投票 0

如何使用Jersey通过Struts 2框架将文件下载为InputStream?

我正在 RESTful 服务的客户端工作,让用户下载文件。我无权访问服务器端代码。 客户端在 Struts 2 下并提交带有一些 XML 的 POST 请求...

回答 1 投票 0

如何使用 Jersey 通过 Struts 2 框架将文件作为输入流下载?

我正在 RESTful 服务的客户端工作,让用户下载文件。我无权访问服务器端代码。 客户端在 Struts 2 下并提交带有一些 XML 的 POST 请求...

回答 1 投票 0

为什么我无法从struts 2 action获取json?

我想使用 jQuery 将 Ajax POST 请求发送到我的 Struts 操作,如下所示: $.ajax({ 类型:“帖子”, url: "ds/查询", 数据:JSON.stringify(数据), ...

回答 2 投票 0

在 Struts 2 中重用自定义表达式验证器[重复]

在Struts 2中我们可以开发@CustomValidator,它可以在应用程序中广泛使用: @CustomValidator(type = "CustomerNumberValidator", fieldName = "customerNo") 用于验证...

回答 2 投票 0

如何将参数从 <s:iterator> 标签内的文本字段传递到 Struts 2 中的操作?

我有一个带有 标记列表的 JSP,该列表使用 getter/setter 迭代在操作中创建的对象。 我能够将映射值从操作拉到 我有一个带有 <s:iterator> 标签列表的 JSP,它使用 getter/setter 迭代在操作中创建的对象。 我能够将映射值从操作拉到 <s:iterator> 标签的文本字段,现在我希望能够将文本字段值从 <s:iterator> 传递回操作类以映射对象,但我意识到它不会调用我的 setter 方法。 这是我的JSP: <s:iterator status="stat" value="parameterList" > <tr id="<s:property value="#stat.index"/>"> <td><s:textfield id="parameterList[%{#stat.index}].queryParameter" name="parameterList[%{#stat.index}].queryParameter" cssClass="size30" labelposition="left" ></s:textfield> </td> <td><s:textfield id="parameterList[%{#stat.index}].parameterValue" name="parameterList[%{#stat.index}].parameterValue" cssClass="size30" labelposition="left" ></s:textfield> </td> </tr> </s:iterator> 这是该操作的片段: private List<QueryParameter> parameterList = new ArrayList<QueryParameter>(); public void setParameterList(List<QueryParameter> parameterList) { this.parameterList = parameterList; } public DQA getDqaObject() { return dqa; } 当我导航到 JSP 时,getter 被调用得很好,但是当我从 JSP 提交表单时,我期望放入 <s:iterator> 标记内的文本字段中的值应该传递并更新操作类中的对象,但是setter 没有被调用。 我解决了这个问题,问题是在我的 getter 中(我忘记在问题中发布)有一些逻辑阻止 getter 继续实际调用对象 setter 来设置参数。 OGNL 在创建新对象时不会调用 setter 方法。如果您想更新现有对象,也不需要它。它应该在填充操作之前初始化。 prepare拦截器可以调用您的操作,如果它实现了Preparable来执行prepare()方法,您可以在其中初始化要更新的对象。 如果您需要一个参数来从数据库检索对象,您可以使用paramsPrepareParams拦截器的堆栈。您可以查看说明在 Struts 2 中绑定后更改参数。 也不要使用 ModelDriven 接口,因为默认情况下它无法与上述堆栈一起正常工作。它需要重新配置默认堆栈以使模型在 params 拦截器 触发之前推送,否则您必须手动处理参数,即来自操作上下文或已弃用的 ParametersAware。

回答 2 投票 0

是否可以为放置在 Tomcat 中的 web 应用程序之外的 JSP 提供服务

我在 Tomcat 的应用程序中使用 Struts 2。 我通过将应用程序的静态资源放置在 webapps 之外并在 server.xml 中进行设置来提供它们。 现在,我想为 JSP 提供服务...

回答 2 投票 0

如何在Java中自定义异常消息中换行?

我需要在自定义异常抛出的消息之间换行。 我正在使用 Struts 2 addActionError(),错误消息将显示在 JSP 上。 这是我的 Java 代码: 如果(结果_Of_S...

回答 1 投票 0

如何获得包含对象“id”的 URL?

如何在 Struts 中拥有一个包含对象 id 的 URL,然后将其传递给一个操作以通过该 id 显示该对象?例如URL 是 /users/1,它显示了一个具有 id 的用户对象...

回答 1 投票 0

Tomcat 是否能够覆盖 log4j 日志记录级别?

我正在使用 Apache Tomcat Web 服务器使用 Struts2 框架开发 Web 应用程序,并且在 log4j 中遇到一些问题。 首先,这是我的 log4j.properties 文件: log4j.rootLogger=错误,L,标准输出 log4j。

回答 1 投票 0

Tomcat 是否能够覆盖 log4j 日志记录级别?

我正在使用 Apache Tomcat Web 服务器使用 Struts2 框架开发 Web 应用程序,并且在 log4j 中遇到一些问题。 首先,这是我的 log4j.properties 文件: log4j.rootLogger=错误,L,标准输出 log4j。

回答 1 投票 0

为什么 JSP 不会对 Struts 2 中的非映射字段抛出错误

我的 Struts 2 操作是 ModelDriven。我还为操作本身定义了一些字段。但是,如果在 JSP 中我使用了错误的字段名称,这些字段名称既不在 ModelDriven 模型中也不直接...

回答 1 投票 0

带选择框的 Struts 2 jQuery 自动完成器不会填充任何值

我在我的 Struts 2 应用程序中使用了 Struts 2 jQuery 自动完成器。 这是我的代码: 联合应用程序: 我在我的 Struts 2 应用程序中使用了 Struts 2 jQuery autocompleter。 这是我的代码: JSP: <s:form id="frm_demo" theme="simple" action="ManagersAutoCompleter1"> <s:url var="remoteurl" action="test" /> <sj:autocompleter href="%{remoteurl}" id="echo3" name="echo" list="itemList" listKey="id" listValue="name" emptyOption="true" headerKey="-1" headerValue="Please Select a Language" selectBox="true" /> <s:submit value="submit" /> </s:form> struts.xml: <action name="test" class="test.TestAction" method="populate"> <result type="json"> </result> </action> 动作类: public String populate() throws Exception { itemList = new ArrayList<ListValue>(); itemList.add(new ListValue("Php", "Php")); itemList.add(new ListValue("Java", "Java")); itemList.add(new ListValue("Mysl", "Mysl")); return SUCCESS; } //getter setter for itemList 列表类: public class ListValue { private String id; private String name; public ListValue(String id, String name) { this.id = id; this.name = name; } //getter setter methods 但是这个 Struts2 jQuery autocompleter 不起作用。它不填充任何值。 做这个 <s:url id="remoteurl" action="test"/> <sj:select id="customersjsonlstid" name="echo" label="Handle a List" href="%{remoteurl}" list="itemList" listValue="name" listKey="id" autocomplete="true" loadMinimumCount="2" id="echo3"/> 而不是这个: <sj:autocompleter href="%{remoteurl}" id="echo3" name="echo" list="itemList" listKey="id" listValue="name" emptyOption="true" headerKey="-1" headerValue="Please Select a Language" selectBox="true" /> 并确保您从操作类返回列表。 要检查这一点,请使用 IDE 调试器或 System.out.print 等执行此操作。 ex... ------------- ------------ itemList.add(new ListValue("Mysl", "Mysl") ); System.out.println("Size of my list="+itemList.size()); return SUCCESS; } 你还应该在你的动作类中定义 getter 和 setter private List itemList; public List getItemList() { return itemList; } public void setItemList(List itemList) { this.itemList = itemList; } 这是错误的: <sj:autocompleter href="%{remoteurl}" id="lst" name="lst" list="itemList" listValue="name" listKey="id" selectBox="true" /> 您正在向自动完成器提供 Map,而不是您自己构建的自定义对象。 HashMap 没有任何 name 和 id 字段,而是具有 key 和 value 字段。 首先更改它,看看它是否有效: <sj:autocompleter href="%{remoteurl}" id="lst" name="lst" list="itemList" listValue="value" listKey="key" selectBox="true" /> 您输入了未引用的错误属性。 <s:url id="remoteurl" action="test" /> 应该是 <s:url var="remoteurl" action="test" /> 使用列表项bean类 public class ListValue { private String id; private String name; ... } public String populate() throws Exception { itemList.add(new ListValue("Php", "Php")); itemList.add(new ListValue("Java","Java") ); itemList.add(new ListValue("Mysl", "Mysl") ); return SUCCESS; } 假设已添加构造函数和修改器。

回答 3 投票 0

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