Apache Struts 2是一个基于servlet的可扩展框架,在其架构中实现了模型 - 视图 - 控制器(MVC)模式,用于创建企业级Java Web应用程序。
我需要使用Struts 2框架开发一个条形图。我发现 JFreeChartBarChartDemo 使用 jFreeChart 开发条形图。但它在 Struts 2 中不可用。我已经搜索了很多
Struts 2 中的 getText() 方法抛出 NullPointerException
我有一个 package.properties 文件,其中包含 email.domain=localhost:8080 现在,从同一包内的类中我调用 getText("email.domain"): System.out.println("http://&
Struts 2迭代器标签内部,如何获取自定义标签的当前对象
如何在自定义标签中传递当前对象。尝试在迭代器中使用 var="workobj" ,并在自定义标记中传递“workobj”,如下所示。但它返回 null。 如何在自定义标签中传递当前对象。尝试在迭代器中使用 var="workobj",并在自定义标签中传递 "workobj",如下所示。但它会返回null。 <s:iterator value="#request.work" var="workobj"> <s:property> <!-- Returns current object --> <!-- Custom tag start---> <work:validate work="${workobj}" > </work:validate> <!-- Custom tag end---> </s:iterator> iterator标签将当前元素推送到值堆栈的top上。 Struts 请求包装器可以访问 valueStack,使用 JSP EL 表达式中的键搜索属性。 <work:validate work="${top}" >
如何迭代会话并将每个提交值保留在同一页面中直到会话结束? 如何迭代会话并在同一页面中保留每个提交值直到会话结束? <html> <body> <s:form action="verify"> <s:textfield name="stuname" label="Enter Username" /><br> <s:textfield name="stuage" label="Enter Age" /><br> <s:textfield name="stumarks" label="Enter Marks" /><br> <s:textfield name="country" label="Enter Country" /><br> <s:submit value="Click" id="submit" /> </s:form> <s:iterator> Name:<s:property value="#session.a" /><br> Age:<s:property value="#session.b" /> <br> Marks:<s:property value="#session.c" /><br> Country:<s:property value="#session.d" /> </s:iterator> </body> </html> 不需要迭代器。 在您的操作中将值设置为会话属性。 在 Jsp 中使用名称检索它们 例如: Name:<s:property value="#session.a" /><br> Age:<s:property value="#session.b" /> <br> Marks:<s:property value="#session.c" /><br> Country:<s:property value="#session.d" /> 这应该可以。 更新1: 用于显示所有输入的值集: 1) 创建一个 POJO 来存储所有这些值(调用 Person)。 2) 在你的行动中保持arraylist of Person物体。 3)每次提交时创建一个新的人员对象并将其添加到人员列表中。 4)在jsp中迭代人员列表并显示所有值。 无需会议。尽可能避免使用会话。 在 JSP 和实际操作中,您正在处理对象或对象数组。使用什么结构并不重要,重要的是对象具有 Name、Age、Marks、Country 等属性,并且它们属于名为 Person 的一个实体。 @Entity public class Person { @Id @GeneratedValue private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } ... //other fields } 现在,会话应该包含许多此类对象,因此您应该创建一个列表并将其放入会话中。 public List<Person> getPersonList() { List<Person> personList = (List<Person>) session.get("personList"); if (personList == null) { personList = new ArrayList<Person>(); session.put("personList", personList); } return personList; } 然后,在操作中,您应该有一个映射到表单字段的对象,该对象在提交时保存到会话中。这是同一个 Person 对象。 private Person person = new Person(); //public getters and setters 现在地图形式 <s:form action="verify"> <s:textfield name="person.name" label="Enter Username" /><br> <s:textfield name="person.age" label="Enter Age" /><br> <s:textfield name="person.marks" label="Enter Marks" /><br> <s:textfield name="person.country" label="Enter Country" /><br> <s:submit value="Click" id="submit" /> </s:form> 此表单不会显示值(因为值映射到操作属性Person并且它是空的) 如何填写personList我已经在上一个例子中解释过。 现在要从中迭代值(人员),即在会话中使用 <s:iterator value="#session.personList"> Name:<s:property value="name" /><br> Age:<s:property value="age" /> <br> Marks:<s:property value="marks" /><br> Country:<s:property value="country" /><br> </s:iterator>
我正在将 Struts 1 应用程序迁移到 Struts 2。在 Struts 2 文档中,它比较了它所说的差异, Struts 2还支持Action Form模式,以及POJO表单 对象...
我想以可以传递静态参数的字符串数组的方式声明一个操作。我尝试了下面的代码: ...
在 Struts 2 中将默认值设置为 <s:checkbox> 标签
我正在使用Struts 2.3的 以下是代码行: 我正在使用Struts 2.3的<s:checkbox> 以下是代码行: <s:checkbox theme="simple" name ="Mychkbox" value="R" onclick="Auto_Au('rej');" /> 现在我需要这个值在行动中,但我没有找到任何方法来设置这个值"R"因为 fieldValue 的 <s:checkbox> 参数将给出 true 或 false。 我需要将值设置为'R',可以在操作类中访问。 如果您使用私有布尔值Mychkbox;它给出像 true 或 false 这样的结果。将其纠正为字符串数据类型的布尔值。 您的值必须在 fieldValue="R" 中设置 action.jsp <s:form action="mylogin"> <s:checkbox theme="simple" name ="Mychkbox" fieldValue="R" value="true" onclick="Auto_Au('rej');"/> </s:form> 我的Action.class private String Mychkbox; public String execute() throws Exception { System.out.Println(" vaue : "+Mychkbox); } 值属性-boolean类型。(UI组件值设置) fieldValue属性--字符串类型(Mychkbox的值) <s:checkbox name="checkMe" fieldValue="true" label="Check Me for testing"/> 这是 Checkbox 的语法。通过使用相同的名称(这里名称是“checkMe”)并在操作类中为其添加 getter 和 setter 方法,我们可以在操作类中获取该值。 示例:我的 Action.class private String checkMe; public String getCheckMe() { return checkMe; } public void setCheckMe(String checkMe) { this.checkMe = checkMe; } 通过使用 getCheckMe() 方法,我们可以获得复选框“checkMe”的值。 在您的示例中使用“mychkbox”而不是“checkMe”。 该网站有一个简单的示例/Struts 2 复选框复选框示例 您的目标 Action 中需要一个具有以下设置器的属性 setMychkbox(String mychkbox){ this.mychkbox = mychkbox; } 但是您在 name 属性中使用大写字母,这将阻止 Struts2 的正确映射。 更改为 <s:checkbox theme="simple" name ="mychkbox" value="R" onclick="Auto_Au('rej');"/> 以小写字母开头 m 以使其正常工作。 默认提交的checkbox输入字段的值设置为true。您可以通过提供 fieldValue 标签的 checkbox 属性来更改此设置。例如 <s:checkbox theme="simple" name ="mychkbox" fieldValue="R" onclick="Auto_Au('rej');"/> 如果您想预设输入元素的值,您应该提供 value 属性。例如 <s:checkbox theme="simple" name ="mychkbox" fieldValue="R" value="%{mychkbox}" onclick="Auto_Au('rej');"/> 请注意,为了更好的可读性,我更改了字段的名称。要将字段名称映射到操作 bean,您应该为 mychkbox 提供一个属性。 private String mychkbox; public String getMychkbox() { return mychkbox; } public void setMychkbox(String mychkbox) { this.mychkbox= mychkbox; } 默认的拦截器堆栈包括 checkbox 拦截器,您应该为其指定 uncheckedValue 参数。为此,您应该覆盖拦截器的参数 <interceptor-ref name="checkbox"> <param name="uncheckedValue">undefined</param> </interceptor-ref>
如何迭代会话并将每个提交值保留在同一页面中直到会话结束? 如何迭代会话并在同一页面中保留每个提交值直到会话结束? <html> <body> <s:form action="verify"> <s:textfield name="stuname" label="Enter Username" /><br> <s:textfield name="stuage" label="Enter Age" /><br> <s:textfield name="stumarks" label="Enter Marks" /><br> <s:textfield name="country" label="Enter Country" /><br> <s:submit value="Click" id="submit" /> </s:form> <s:iterator> Name:<s:property value="#session.a" /><br> Age:<s:property value="#session.b" /> <br> Marks:<s:property value="#session.c" /><br> Country:<s:property value="#session.d" /> </s:iterator> </body> </html> 不需要迭代器。 在您的操作中将值设置为会话属性。 在 Jsp 中使用名称检索它们 例如: Name:<s:property value="#session.a" /><br> Age:<s:property value="#session.b" /> <br> Marks:<s:property value="#session.c" /><br> Country:<s:property value="#session.d" /> 这应该可以。 更新1: 用于显示所有输入的值集: 1) 创建一个 POJO 来存储所有这些值(调用 Person)。 2) 在你的行动中保持arraylist of Person物体。 3)每次提交时创建一个新的人员对象并将其添加到人员列表中。 4)在jsp中迭代人员列表并显示所有值。 无需会议。尽可能避免使用会话。 在 JSP 和实际操作中,您正在处理对象或对象数组。使用什么结构并不重要,重要的是对象具有 Name、Age、Marks、Country 等属性,并且它们属于名为 Person 的一个实体。 @Entity public class Person { @Id @GeneratedValue private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } ... //other fields } 现在,会话应该包含许多此类对象,因此您应该创建一个列表并将其放入会话中。 public List<Person> getPersonList() { List<Person> personList = (List<Person>) session.get("personList"); if (personList == null) { personList = new ArrayList<Person>(); session.put("personList", personList); } return personList; } 然后,在操作中,您应该有一个映射到表单字段的对象,该对象在提交时保存到会话中。这是同一个 Person 对象。 private Person person = new Person(); //public getters and setters 现在地图形式 <s:form action="verify"> <s:textfield name="person.name" label="Enter Username" /><br> <s:textfield name="person.age" label="Enter Age" /><br> <s:textfield name="person.marks" label="Enter Marks" /><br> <s:textfield name="person.country" label="Enter Country" /><br> <s:submit value="Click" id="submit" /> </s:form> 此表单不会显示值(因为值映射到操作属性Person并且它是空的) 如何填写personList我已经在上一个例子中解释过。 现在要从中迭代值(人员),即在会话中使用 <s:iterator value="#session.personList"> Name:<s:property value="name" /><br> Age:<s:property value="age" /> <br> Marks:<s:property value="marks" /><br> Country:<s:property value="country" /><br> </s:iterator>
我在Struts 2 Web项目的struts.xml上遇到问题。 我有登录页面,登录后,URL 将添加 /secure/*.action。 我尝试在 struts.xml 中有两个包。一个是正常的/而且是...
我正在尝试在我的表单上使用验证,我做了示例中的所有操作,并多次用 Google 搜索来找到解决方案,但不幸的是,我无法解决我的问题。 我的问题是: 当我点击...
如何在 Struts 2 中不使用 ModelDriven 的情况下从 JSP 填充 POJO?
我想在不使用 ModelDriven 的情况下从 JSP 初始化我的 POJO 类。 例如: 在 JSP 中 - 用户名和密码是输入字段。 有一个带有用户名和密码字段的 POJO 用户。 嗬...
java.lang.NoSuchMethodError:org.apache.logging.log4j.util.PropertiesUtil.getStringProperty()
我在启动 Tomcat 服务器时遇到以下异常。 这似乎是一个 log4j 异常。我刚刚将 Struts 版本从 2.5.20 升级到 2.5.22。 Log4j-api-2.12.1 和 log4j-core 是 2.13.2。
我在启动 Tomcat 服务器时遇到以下异常。 这似乎是一个 log4j 异常。我刚刚将 Struts 版本从 2.5.20 升级到 2.5.22。 Log4j-api-2.12.1 和 log4j-core 是 2.13.2。
SAXParseException:文档无效:找不到语法。 struts.xml
我正在开发一个Struts+Hibernate Web应用程序。我在使用 struts.xml 时遇到以下错误: 无法加载配置。 - 文件:/F:/BidNext/build/web/WEB-INF/classes/struts.xml:9...
我正在开发一个Java应用程序,该应用程序似乎存在会话劫持漏洞。 为了防止这种情况,建议在登录后更改用户的 JSESSIONID。 我的
Struts 2 中统计按钮的点击次数并保存到 MySQL 数据库?
如何统计按钮的点击次数并保存到MySql数据库中?新会话中的点击次数应添加到现有值中。 这是我创建的 DAO: 公共投票 updatePoll(int id)...
使用Struts标签代替JSP表达式标签(<% expression %>)
我想从这段代码中删除 scriptlet,并且必须用 Struts 标签替换它们,有人可以建议我该怎么做吗? 我想从这段代码中删除 scriptlet,我必须用 Struts 标签替换它们,有人可以建议我如何做吗? <td CLASS="PSEDITBOX_DISPONLY" align="left" colspan="5"> +Name: <%=(user == null || user.getPreferredName() == null) ? "" : user.getPreferredName()%> </td> 使用 <logic:present/> 标签。 <td CLASS="PSEDITBOX_DISPONLY" align="left" colspan="5"> +Name: <logic:present name="user"> < bean:write name="user" property="preferredName"/> </logic:present> <logic:notPresent name="user"> --- (no preferred name) </logic:notPresent> </td> 在你的动作类中定义一个带有 getter 的属性 public String getPreferredName() { return (user == null || user.getPreferredName() == null) ? "" : user.getPreferredName() ;} 更改您的代码 <td CLASS="PSEDITBOX_DISPONLY" align="left" colspan="5"> +Name: <s:property value="preferredName"/> </td> 这是正确的格式, <td CLASS="PSEDITBOX_DISPONLY" align="left" colspan="5"> <s:if test="%{#user ==null } ||%{#user.preferredName ==null}"> Name : </s:if> <s:else> Name :<s:property value="preferredName"/> </s:else> </td>
如何保留现有选择并允许用户在 Struts 2 <s:select> 标签中添加更多选择?
当用户在struts tag select中进行进一步选择时,如何保留列表中的现有选择。 联合应用程序: 当用户在 struts 标签中进行进一步选择时,如何保留列表中的现有选择select。 JSP: <s:select key="chosenId" id="chosenId" name="entity.IdList" listKey="iD" list="idList" listValue="idName" size="5" multiple="true"/> 例如:现有选择是"Finance"并测试特定对象(参见图片)。当用户编辑特定对象时,他可能想选择另一个 id 名称。 问题是当用户尝试在选择框中进行选择时,当前选择消失。所以,我想保留现有的选择并允许用户选择更多。 我应该采取什么样的方法才能获得这种功能? 该方法至关重要,您需要可以从列表中添加更多元素的地方。它可以是 textfield、textarea 无论你想要什么。然后请将事件处理程序添加到列表元素,当您从列表中选择项目时,只需将当前选择添加到占位符即可。
我觉得我可能非常接近解决方案,但我就是无法掌握它。 程序的基本流程: 首先,您填写表格并提交。动作类将把对象存储在一个se...
在Struts 2中为一个JSP上的两个表单配置不同的Action类
我有一个 JSP 页面,其中有两个带有提交按钮的表单。如何为这两种表单配置不同的操作类? 例如: form1提交按钮配置到classA 和 form2 提交