ognl 相关问题

OGNL代表对象图导航语言。它是用于获取和设置Java对象属性的表达式语言。

Struts 2中如何通过id而不是property从JSP获取数据到Action类?

我正在Java Struts 2框架上做。 通常,我可以通过 Form.java(动作类)中的 get set 方法从 JSP 获取数据。下面是我的例子: 在 main.jsp 文件中: 我正在Java Struts 2框架上做。 通常,我可以通过Form.java(动作类)中的get set方法从我的JSP获取数据。下面是我的例子: 在 main.jsp 文件中: <html:text property="campaignName" size="50" maxlength="50" /> 因此,我可以通过action类中的getter和setter方法获取这个文本框名称,以下是代码来自 mainForm.java: private String campaignName = null; public String getCampaignName() { return campaignName; } public void setCampaignName(String campaignName) { this.campaignName = campaignName; } 但是,因为我想使用 jQuery 来做一些事情,所以我不再使用 <html:text> 作为文本框,而是使用 <input type="text" id="datepicker" />。 由于此文本框中没有 property 属性,因此我无法从此文本框中获取值。我也尝试在文本框中添加property="something",但是mainForm.java中的get set方法返回null。 我想问一下,如何获取这个文本框的值? <s:textfield name="campaignName" size="50" maxlength="50" /> 或 <input type="text" name="campaignName" size="50" maxlength="50" /> 名称需要与字段名称匹配 该文本框的简单用法是使用 s:textfield 标签。 <s:textfield name="campaignName" size="50" maxlength="50" /> 您可以使用<s:textfield name="campaignName" size="50" maxlength="50" />并将struts标签添加到您的jsp中(在顶部): <%@ taglib prefix="s" uri="/struts-tags"%>

回答 3 投票 0

如何将 JSP 变量转换为 Struts 2 变量?

如何将 JSP 变量转换为 Struts 2 变量? 我尝试过以下方法: <%=scoredDocument%> 如何将 JSP 变量转换为 Struts 2 变量? 我尝试过以下方法: <%=scoredDocument%> <s:push value="scoredDocument"/> <s:push value="#scoredDocument"/> <s:push value="%{scoredDocument}"/> <s:push value="${scoredDocument}"/> <s:push value="#page.scoredDocument"/> <s:push value="%{#page.scoredDocument}"/> <display:column title="Study Code" sortable="true"> <s:property value="id"/> 最常见的错误是 原因:标签'push',字段'value':您必须指定一个值来压入堆栈。示例:人 - [未知位置] <s:push> 必须包含 <s:property> 标签。还有 <s:push value="#attr.scoredDocument"> <display:column title="Study Code" sortable="true"> <s:property value="id"/> </display:column> </s:push> #attr?什么是Struts?甚至没有记录! https://struts.apache.org/release/2.0.x/docs/jsp.html push标签需要value属性并且必须对其进行初始化,否则会显示JSP错误。与其他可以用空字符串预初始化值的标记不同,JSP 不会抱怨。 OGNL 表达式在此属性中进行计算,就像在 Struts 标签的许多其他属性中一样,如果无法解析该值,则返回 null。该值对于 push 标记来说是不可接受的,并且会引发异常。该错误会导致尝试通过 OGNL 表达式访问 scriptlet 变量值,但不幸的是,这些方法都不起作用。 Scriptlet 表达式与 Struts 标签一起使用时有一个陷阱,您只能在标签正文中使用它,并且它会转换为字符串。就像这个例子 <s:set var="scoredDocument"><%=scoredDocument%></s:set> 您不能对 push 标签执行相同操作。之后,您可以在 OGNL 表达式中使用 #scoredDocument 的字符串化版本。

回答 2 投票 0

Struts 2中JSP显示内容时如何获取值?

我在下面的代码中遇到问题 我在下面的代码中遇到问题 <s:form action="updateBankInfo.action" enctype="multipart/form-data" method="post" theme="simple"> <s:actionerror /> <div style="font-family:Times New Roman;font-size:30px; padding-left: 250px;">Bank Info</div> <div> <div class="label"><s:text name="Payee Name* :"/></div> <div class="input"><s:textfield value="%{#session.payeeName}" name="bean.payeeName" readonly="false" /></div> <div><s:fielderror fieldName="bean.payeeName"/></div> </div> <div> <div class="label"><s:text name="Bank* :"/></div> <div class="input"><s:textfield value="%{#session.bankName}" name="bean.bankName" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankName"/></div> </div> <div> <div class="label"><s:text name="Branch* :"/></div> <div class="input"><s:textfield value="%{#session.bankBranch}" name="bean.bankBranch" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankBranch"/></div> </div> <div> <div class="label"><s:text name="City* :"/></div> <div class="input"><s:textfield value="%{#session.city}" name="bean.city" readonly="false" /></div> <div><s:fielderror fieldName="bean.city"/></div> </div> <div> <div class="label"><s:text name="A/C No*:"/></div> <div class="input"><s:textfield value="%{#session.accountNo}" name="bean.accountNo" readonly="false" /></div> <div><s:fielderror fieldName="bean.accountNo"/></div> </div> <div> <div class="label"><s:text name="IFSC Code :"/></div> <div class="input"><s:textfield value="%{#session.IFSCCode}" name="bean.IFSECode" readonly="false" /></div> <div><s:fielderror fieldName="bean.IFSECode"/></div> </div> <button type="submit" style="width:107px;height:34px;margin-top:100px;margin-left:10px;font-size:1.67em;background-color:#d9d9d9;clear: left;" onclick="form.submit()"><s:text name="Update"/></button> </s:form> 在这一切中,我从数据库中获取并存储在会话中的值。第一次 bankName 不会包含任何值,并且我使用了验证器方法来进行验证,所以如果我为 bankname 提供值并单击提交。因为我已经给出了 bankName,所以我无法保留 value="%{#session.bankName}" 值,因为 bankName 不包含任何值。如何取回值? 创建 bean 实例和 getter/setter,即 private Bean bean = new Bean(); public Bean getBean() { return bean; } public void setBean(Bean bean){ this.bean = bean; } 要保留你应该的价值观 Map session = ActionContext.getContext().getSession(); session.put("bankName", bean.getBankName()); // the same put for the others. 参见简单示例中会话的使用。

回答 1 投票 0

如何在JSP I Struts 2中显示内容时检索值?

我在下面的代码中遇到问题 我在下面的代码中遇到问题 <s:form action="updateBankInfo.action" enctype="multipart/form-data" method="post" theme="simple"> <s:actionerror /> <div style="font-family:Times New Roman;font-size:30px; padding-left: 250px;">Bank Info</div> <div> <div class="label"><s:text name="Payee Name* :"/></div> <div class="input"><s:textfield value="%{#session.payeeName}" name="bean.payeeName" readonly="false" /></div> <div><s:fielderror fieldName="bean.payeeName"/></div> </div> <div> <div class="label"><s:text name="Bank* :"/></div> <div class="input"><s:textfield value="%{#session.bankName}" name="bean.bankName" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankName"/></div> </div> <div> <div class="label"><s:text name="Branch* :"/></div> <div class="input"><s:textfield value="%{#session.bankBranch}" name="bean.bankBranch" readonly="false" /></div> <div><s:fielderror fieldName="bean.bankBranch"/></div> </div> <div> <div class="label"><s:text name="City* :"/></div> <div class="input"><s:textfield value="%{#session.city}" name="bean.city" readonly="false" /></div> <div><s:fielderror fieldName="bean.city"/></div> </div> <div> <div class="label"><s:text name="A/C No*:"/></div> <div class="input"><s:textfield value="%{#session.accountNo}" name="bean.accountNo" readonly="false" /></div> <div><s:fielderror fieldName="bean.accountNo"/></div> </div> <div> <div class="label"><s:text name="IFSC Code :"/></div> <div class="input"><s:textfield value="%{#session.IFSCCode}" name="bean.IFSECode" readonly="false" /></div> <div><s:fielderror fieldName="bean.IFSECode"/></div> </div> <button type="submit" style="width:107px;height:34px;margin-top:100px;margin-left:10px;font-size:1.67em;background-color:#d9d9d9;clear: left;" onclick="form.submit()"><s:text name="Update"/></button> </s:form> 在这一切中,我从数据库中获取并存储在会话中的值。第一次 bankName 不会包含任何值,并且我使用了验证器方法来进行验证,所以如果我为 bankname 提供值并单击提交。因为我已经给出了 bankName,所以我无法保留 value="%{#session.bankName}" 值,因为 bankName 不包含任何值。如何取回值? 创建 bean 实例和 getter/setter,即 private Bean bean = new Bean(); public Bean getBean() { return bean; } public void setBean(Bean bean){ this.bean = bean; } 要保留你应该的价值观 Map session = ActionContext.getContext().getSession(); session.put("bankName", bean.getBankName()); // the same put for the others. 参见简单示例中会话的使用。

回答 1 投票 0

如何在Struts 2中制作具有两个条件的<s:if>标签?

我遍历一个项目列表,如果元素的状态等于学生或教师,则需要显示特定的下拉列表。下面的代码显示了所有字段,但没有显示dropd...

回答 2 投票 0

Struts 2 中如何创建动作 bean?

我使用的是Struts 2,我知道Struts根据请求在action中创建声明的bean对象,以便它可供action使用。 我一直在研究了解哪个

回答 1 投票 0

为什么在 Struts 2 中,即使没有 value 属性,<s:textfield> 标签也会显示值?

我有一个 Struts 2 标签,我只需要让用户输入一个值并将其发送到操作。 我有一个 Struts 2 <s:textfield> 标签,我只需要让用户输入一个值并将其发送到操作。 <s:textfield name="user.firstAnswer" size="110" cssClass="FormObjectCompulsary" autocomplete="off" /> 即使加载此页面,用户对象也包含第一个答案的值。我不想将其显示在文本字段中。相反,我希望文本字段为空。 但是,如果不指定 value 属性,用户对象的值仍然显示在该字段中。 如果要添加新对象 user,那么您应该在 JSP 中显示它之前使用 new 运算符创建该对象。它将包含未显示的 null 引用。如果未指定 value 属性,则使用 name 显示值。 在 execute() 内后将用户对象设置为空。所以它再次不会在文本框中显示值。 例如。 user = null; 我正在向您展示一段代码,也许会对您有所帮助。 请参阅execute()。 package online.solution; import com.opensymphony.xwork2.Action; public class MyAction implements Action { UserBean user = new UserBean(); public UserBean getUser() { return user; } public void setUser(UserBean user) { this.user = user; } @SuppressWarnings("finally") @Override public String execute() throws Exception { String result = ""; try { user.setGuest("Bye bye"); System.out.println(user.getUsername() + " " + user.getPassword()); if (user.getUsername().equals(user.getPassword())) { result = SUCCESS; } else { result = ERROR; } user = null; //Make it null when all task completed. } catch (Exception exception) { System.out.println("Exception -> " + exception); } finally { return result; } } @Override protected void finalize() throws Throwable { super.finalize(); } } 通过查看 name="user.firstAnswer" 我认为您正在将 ModelDriven<> 实现到您的操作类中。可能发生的情况是,当您在操作类中返回成功并进入 jsp 页面时,如果在操作中您的用户模型有一些值..模型驱动将在您的 JSP 页面上为您设置这些字段。 我在学习 struts2 时使用了这种方法来更新表单功能。只需确保用户对象在返回之前不包含任何内容...

回答 3 投票 0

如何在 Struts 2 中使用 OGNL 更改会话范围变量的属性值?

是否可以使用 OGNL 更改会话范围变量的属性值? 例如,如果我的会话中有一个名为 PROCESS_CONFIG 的属性,它是一个具有 na... 属性的对象。

回答 1 投票 0

在 Struts 2 中迭代 List 时获取对象属性

我正在迭代一个List,但我只想打印出SomeObject的某些属性,具体取决于另一个列表中指定的属性。到目前为止,我已经得到了。我是什么...

回答 2 投票 0

我可以在 Struts 2 的隐藏字段中保留对象引用吗?

我可以在 Struts 2 的隐藏字段中保留对象引用吗? 我的 JSP: 员工是一个引用,它引用Action类中的一个员工对象,w...

回答 2 投票 0

动态 <s:form> 操作

有没有办法在Struts 2中的标签中指定动态动作属性?我想要类似下面的东西。 有没有办法在 Struts 2 的 action 标签中指定动态 <s:form> 属性?我想要像下面这样的东西。 <c:set var="formAction" value="baseAction" /> <c:if test="${someCondition}"> <c:set var="formAction" value="childAction" />Ac <s:form method="post" action="${formAction}"> <s:input....../> <s:select...../> </s:form> 我知道这可以使用 JavaScript 来实现,但我想避免重构。 我尝试使用 scriptlet 来实现此目的,但问题是 Struts 2 标签不采用 运行时属性。我什至尝试了 OGNL,但也没有帮助。 使用Struts2标签设置值并检查条件,然后使用OGNL放置action属性。 <s:set var="formAction" value="'baseAction'" /> <s:if test="some_condition"> <s:set var="formAction" value="'childAction'" /> </s:if> <s:form method="post" action="%{#formAction}"> <s:input....../> <s:select...../> </s:form> 使用 s:url 标签动态构建操作 URL。 <s:url action="%{somePoperty}" var="myUrl"/> <s:form action="%{#myUrl}"> 事实上,Struts 标签的属性不仅接受 scriptlet,还接受 JSTL EL 表达式。

回答 2 投票 0

比较validation.xml中的两个字符串值

我是 Struts 2 和 OGNL 的新手,正在制作一个带有注册页面的简单 Web 应用程序。有两个字段,密码和重新密码(重新输入密码)并使用验证框架...

回答 2 投票 0

如何使用 <s:iterator> 迭代 HashMap 键并在 Struts 2 中打印列表值?

我有一个像这样定义的HashMap linkcategory = new HashMap>(); 正如您所看到的,每个键都指向一个 List 对象。当我尝试迭代...

回答 1 投票 0

如何将 Map<ObjectA, List<ObjectB>> 传递给 Struts 2 中的操作?

我有一个事件对象,里面有一个Map>,ObjectA是标签,List是表格行。使用以下代码,我可以显示表格

回答 2 投票 0

在Struts 2中如何不使用<s:iterator>标签来检索HashSet的元素?

我正在使用 Struts 2。请帮助我理解如何使用 Struts 2 标签而不使用 Struts 标签来检索 HashSet 的元素。 struts.xml: 我正在使用 Struts 2。请帮助我理解如何使用 Struts 2 标签而不使用 Struts HashSet 标签来检索 <s:iterator> 的元素。 struts.xml: <struts> <constant name="struts.devMode" value="true" /> <package name="bundle" extends="struts-default" namespace="/"> <action name="fetchPage"> <interceptor-ref name="defaultStack" /> <result name="success">/jsp/page.jsp</result> </action> <action name="process" class="sample.action.Process" method="execute"> <interceptor-ref name="defaultStack" /> <result name="success">/jsp/result.jsp</result> </action> </package> </struts> Process.java(动作类): package sample.action; import java.util.HashSet; import java.util.Set; import sample.pojo.Customer; import com.opensymphony.xwork2.ActionSupport; public class Process extends ActionSupport { private Set<Customer> result = new HashSet<Customer>(); public String execute() { Customer cust1 = new Customer(); cust1.setAge(59); cust1.setName("Subramanian"); result.add(cust1); return SUCCESS; } public Set<Customer> getResult() { return result; } public void setResult(Set<Customer> result) { this.result = result; } } Cutomer.java - Pojo 类: package sample.pojo; public class Customer{ String name; int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } result.jsp - 查看: <!DOCTYPE html> <html> <head> <%@ taglib prefix="s" uri="/struts-tags"%> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta http-equiv="X-UA-Compatible" content="IE=8;" /> <title>Welcome Page</title> </head> <body> Welcome! <s:textfield id="custName" value="%{result[0].name}"/> </body> </html> 使用上面的代码,我无法读取HashSet页面中的result.jsp对象值。 您可以使用 () 符号代替 []。最后一个用于 List 和数组,或 Map。所以它不适用于Set。 <s:textfield id="custName" value="%{result(0).name}"/> 您应该将 id 属性添加到元素的类型中。 id 是映射集合的默认键。 public class Customer{ Integer id; String name; int age; //getter and setter } 与其他属性一起初始化 id 属性 Customer cust1 = new Customer(); cust1.setId(0); cust1.setAge(59); cust1.setName("Subramanian"); result.add(cust1); 您可以在通过集合的属性对集合进行索引中了解有关类型转换的更多信息。 还有 OGNL 开发指南,用于理解索引。 如何使用Struts2标签检索HashSet的元素而不使用<s:iterator>? 通过使用一些称为投影的 OGNL 魔法。 <s:textfield id="custName" value="%{result.{name}[0]}" /> result.{name} 将从 name 中的所有 result 值创建一个列表,并且 [0] 将检索该列表的第一个元素。 请注意,因为您使用的是 HashSet,所以不能保证迭代顺序。使用 LinkedHashSet 实现可预测的迭代顺序。 如果您想保留Set,您可以使用 <s:property value="%{result.iterator.next.name}"/> 或者 将 Set 更改为 List,List 有 get 方法,而 set 没有。 之后下面的两个都可以工作 <s:property value="%{result[0].name}"/> <s:property value="%{result.get(0).name}"/>

回答 3 投票 0

在Struts 2中添加带有action属性的查询字符串参数

我正在附加带有操作属性的参数,但我在 Struts 2 页面上遇到异常。 PWC6212:需要等号 下面是我的带有附加参数的操作属性,wh...

回答 3 投票 0

如何一起使用Struts <s:iterator>和<s:if>标签?

我有名为 allAlbums 和 allPhotos 的对象列表。现在,我想显示每个相册中的所有照片,所以我使用了以下方法。 我的代码是: 我有名为 allAlbums 和 allPhotos 的对象列表。现在,我想显示每个相册中的所有照片,所以我使用了以下方法。 我的代码是: <s:iterator value="allAlbums"> <s:iterator value="allPhotos"> <s:if test="%{#allAlbums.albumid == #allPhotos.albumid}"> <s:property value="photourl"/> </s:if> </s:iterator> </s:iterator> 但是,它不起作用。有什么建议我做错了什么吗? 确保您的两个对象都有适当的 getter/setter,然后您可以使用 OGNL 提供的称为投影的功能。 <s:iterator value="allAlbums" var="album"> <s:iterator value="allPhotos.{? #this.albumid == #album.albumid}"> <s:property value="photourl"/> </s:iterator> </s:iterator> 您引用了错误的对象。为您要引用的记录定义一个 var 属性并引用它。 <s:iterator var="album" value="allAlbums"> <s:iterator var="photo" value="allPhotos"> <s:if test="#album.id == #photo.albumId"> <s:property value="photoUrl"/> </s:if> </s:iterator> </s:iterator>

回答 2 投票 0

为什么<s:property>标签无法访问Struts 2中的抽象父类成员

我在通过 Struts 访问属性时遇到问题。我想知道是否有人对 Struts 比较有经验,可以给我一些指导? Java 类的设置大致如下...

回答 1 投票 0

在 Struts 2 中提交表单后,Action 的布尔值不再与 JSP 绑定

从 JSP 中,只有布尔值没有绑定到操作的布尔变量中。其他所有变量都变得绑定良好。 xBudgetFlag 是不具有约束力的布尔变量。 其他所有变量...

回答 1 投票 0

java.lang.NoClassDefFoundError:ognl.OgnlRuntime

我最初想将一个JAVA EE项目迁移到Maven中。 但是,我遇到了调度错误。 我在文件中得到了这个堆栈跟踪: C:\Program Files using(x86)\IBM\WebSphere\AppServer\profiles\

回答 3 投票 0

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