JSP(JavaServer Pages)是一种在服务器上运行的基于Java的视图技术,它允许您在(客户端语言,如HTML,CSS,JavaScript等)中编写模板文本,并与后端Java代码进行交互。
在 Struts 2 中提交后如何根据表单中输入的数据更新模型
我在 Struts 2 中有一个表单,其中包含不同类型的字段。当我在表单中输入数据并提交时,输入的数据不会被赋值,并且在 ActionSupport 类中它们为空。下面是我的样本
我想知道,如果我们填充action类属性,我们是否可以直接在结果JSP中访问它们,而不将它们分配给action类中的表单?
如何将 Struts 2 中的迭代器列表传递给 JavaScript?
扣除 <fieldset class="fieldset"> <legend class="legendtitle">DEDUCTIONS</legend> <table width="100%" border="0" cellspacing= "0" cellpadding="0"> <tr> <td class="Htd_one1" width="20%"><div align="center">Component</div></td> <td class="Htd_one1" width="20%"><div align="center">Allocated</div></td> </tr> <s:iterator value="%{#resultLists.deductionLists}" id="hrEmpSalaryCompDeductionList" status="stat"> <s:if test="%{#allowanceList.allocatedSalAmount > 0}"> <tr> <td class="labelone1" > <div align="center"> <s:property value="%{#allowanceList.componentDesc}" /> </div> </td> <td class="dataone1" > <div align="right"> <s:property value="%{#allowanceList.allocatedSalAmount}" /> </div> </td> </tr> </s:if> </s:iterator> </table> </fieldset> 如果迭代器列表allowanceList.allocatedSalAmount中resultLists.deductionLists的值都不大于0,我需要隐藏整个字段集。 我想到调用 JavaScript 并传递 resultLists.deductionLists 的值,然后设置一个计数器(如果任何 allowanceList.allocatedSalAmount 大于 0)。 但是,我怎样才能将 resultLists.deductionLists 的列表值传递给 JavaScript 并从中访问所有 allowanceList.allocatedSalAmount 呢? 要隐藏整个 fieldset,您必须用 <s:if> 标签将其包裹起来。 <s:if test="%{#allowanceList.allocatedSalAmount > 0}"> <fieldset class="fieldset"> <legend class="legendtitle">DEDUCTIONS</legend> <table width="100%" border="0" cellspacing= "0" cellpadding="0"> <tr> <td class="Htd_one1" width="20%"><div align="center">Component</div></td> <td class="Htd_one1" width="20%"><div align="center">Allocated</div></td> </tr> <s:iterator value="%{#resultLists.deductionLists}" id="hrEmpSalaryCompDeductionList" status="stat"> <tr> <td class="labelone1" > <div align="center"> <s:property value="%{#allowanceList.componentDesc}" /> </div> </td> <td class="dataone1" > <div align="right"> <s:property value="%{#allowanceList.allocatedSalAmount}" /> </div> </td> </tr> </s:iterator> </table> </fieldset> </s:if> 因为在 fieldset 中一次只能迭代一个列表,所以不能让同一个迭代器迭代两个列表。您必须在 <s:if> 标记中定义要计算的正确表达式,以决定是否应该显示字段集。
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}" >
在 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>
我正在尝试在我的表单上使用验证,我做了示例中的所有操作,并多次用 Google 搜索来找到解决方案,但不幸的是,我无法解决我的问题。 我的问题是: 当我点击...
如何在 Struts 2 中不使用 ModelDriven 的情况下从 JSP 填充 POJO?
我想在不使用 ModelDriven 的情况下从 JSP 初始化我的 POJO 类。 例如: 在 JSP 中 - 用户名和密码是输入字段。 有一个带有用户名和密码字段的 POJO 用户。 嗬...
Java 服务器 (Tomcat 9.0.48) 忽略 ${} [重复]
我对 Java Web 开发相对较新,我正在尝试在 JSP 文件中执行 JavaScript 代码,即 ${(format.date)},但是当我在 Web 浏览器上查看源代码时,它完全忽略
Java 服务器 (Tomcat 9.0.48) 忽略 ${} 这个表达式 [重复]
我对 Java Web 开发相对较新,我正在尝试在 JSP 文件中执行 JavaScript 代码,即 ${(format.date)},但是当我在 Web 浏览器上查看源代码时,它完全忽略
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 无论你想要什么。然后请将事件处理程序添加到列表元素,当您从列表中选择项目时,只需将当前选择添加到占位符即可。
我正在尝试开发一个接受用户输入并转换为文本文件的网站。然后,该文本文件将用作 JAR 文件的输入。 (例如 java -jarencoder.jar -i text.txt),然后 jar 出来...
我正在尝试开发一个接受用户输入并转换为文本文件的网站。然后,该文本文件将用作 .jar 文件的输入。 (例如 java -jarencoder.jar -i text.txt),然后 jar 出来...
我觉得我可能非常接近解决方案,但我就是无法掌握它。 程序的基本流程: 首先,您填写表格并提交。动作类将把对象存储在一个se...
addActionMessage("不存在!"); 如何避免在显示所有页面的 JSP 页面中出现此消息。 联合应用程序: addActionMessage(" does not exist!"); 如何避免在显示所有页面的 JSP 页面中出现此消息。 JSP: <s:actionerror cssClass="MessageBox" theme="simple" /> </s:if> <s:if test="hasActionMessages()"> <s:actionmessage cssClass="MessageBox" theme="simple" /> </s:if> 我想你已经添加了 addActionMessage(" does not exist!"); 在所有行动方法中 您应该在操作类的每个方法中使用不同的消息来获取不同的消息。 ActionMessage 也是Collection<String> getActionMessage() {... }。所以你可以使用迭代器方法。试试这个, <s:iterator value="actionMessage" status="s"> <s:set var="S1" value="%{actionMessage.get(#s.index)}"/> <s:if test="#S1.contains(' does not exist!')"> True </s:if><s:else> False </s:else> </s:iterator> 如果操作有操作消息,则会显示它们。您需要更改逻辑来决定是否应显示操作消息。在操作类中创建一个返回 boolean 的方法,并在需要测试时调用它。例如 private boolean showActionMessages; public boolean isShowActionMessages(){ return hasActionMessages() && showActionMessages; } 然后更改 if 标签 <s:if test="showActionMessages"> <s:actionmessage cssClass="MessageBox" theme="simple" /> </s:if>
尝试使用 Struts 2 中 <s:iterator> 标签内的 `onchange` 事件设置属性值时出现的问题
我使用的是Struts 2.1.6。我在尝试使用 标记内的 onchange 事件设置属性值时遇到问题。 我使用的是Struts 2.1.6。我在尝试使用 onchange 标签内的 <s:iterator> 事件设置属性值时遇到问题。 <s:iterator value="myList" status="rowStatus"> <tr> <td><s:textfield name="myList[%{#rowStatus.index}].abc" value="%{model[#rowStatus.index].abc}" onchange="myList[%{#rowStatus.index}].changeFlag = "true"/></td> <td><s:textfield name="myList[%{#rowStatus.index}].changeFlag" value="%{model[#rowStatus.index].changeFlag}" /></td> </tr> </s:iterator> 列表myList有多个对象,如果任何特定行的abc属性的值发生更改,那么我尝试将changeFlag的值设置为true。然而它不起作用。 如何做? onchange标签中的s:textfield属性是 在渲染的 HTML 元素上设置 HTML onchange 属性 渲染的 html 元素是 <input type="text">。对于此元素, onchange 属性定义了一个 JavaScript 函数来处理事件。所以你可以创建一个函数doChange()。但在此之前你需要添加 id 属性 HTML id 属性 这允许通过 id 来定位文档中的元素。 <s:iterator value="myList" status="rowStatus"> <tr> <td><s:textfield id="myList[%{#rowStatus.index}].abc" name="myList[%{#rowStatus.index}].abc" value="%{model[#rowStatus.index].abc}" onchange="doChange('myList[%{#rowStatus.index}].changeFlag')"/></td> <td><s:textfield id="myList[%{#rowStatus.index}].changeFlag" name="myList[%{#rowStatus.index}].changeFlag" value="%{model[#rowStatus.index].changeFlag}" /></td> </tr> </s:iterator> <script> function doChange(dest) { document.getElementById(dest).value = 'true'; } </script> P.S.:您使用的 Struts 版本太旧(2.1.6)。您应该知道如何获取更新版本。请参阅如何了解 Struts 2 的版本。
是否可以将 Angular 4 与 Struts 2 和 Hibernate 集成? [重复]
我是 Angular 4 的新手。是否可以将 Angular 4 与 Struts 2 和 Hibernate 集成? 如果是,那么在哪里保存 web.xml、JSP 文件、Hibernate 等。在哪里保存 Struts jar? 任何示例代码或
我想将数据库中的数据值放入Employee类中,然后在JSP文件中显示所有值。但是,继续出现错误,提示列表为空。 员工.java 包员工...