我想创建一个动作类,而没有设置器,也没有在用户界面的数据上进行属性.相反,我想在自己的构建器类中使用ServletActionContext.getRequest().getParameterMap()来构建对象. 我创建了没有属性的Action类.当我提交表格时,我会遇到ognl.OgnlException: target is null for setProperty(null, "field-name", [Ljava.lang.String;@5513fab7) 传达Struts2框架以不设置属性并停止避免我要接受的例外? 是否需要其他其他约定或配置 解决方案 您可以从 dojo\..*,^struts\..*,^session\..*,^request\..*,^application\..*,^servlet(Request|Response
以下是关于 ognl 的编程技术问答
我有一个父文件,其中静态包括我的JSP. 在随附的文件中,我想使用Struts2标签访问父jsp的变量. 请让我知道是否可能,或者我应该去 dynamic include. 解决方案 您无法访问变量,但是可以使用OGNL从"值堆栈"访问变量.请参阅 除了上面给出的示例和描述外,EL自Webwork 1.x以来还有一些重大变化.最大的一个是不再使用前向斜杠/访问属性,而是使用点.访问.同样,我们现在使用[n]而不是使用..沿堆栈横穿堆栈,其中n是某些正数.最后,在Webwork 1.x中,一个人可以使用@foo可以访问特殊命名对象(准确的请求范围属性),但是现在使用#foo访问特殊变量.但是,重要的是要注意,#foo do 不是访问请求属性.因为XWork不仅是为Web构建的,因此没有"请求属性"的概念,因此#foo仅是对OgnlContext除根以外的另一个对象的请求. 包含JSP内容会动态使用
有一个对象ObjectA具有ObjectB的列表. ObjectB内部有一个TreeMap.此TreeMap在另一个对象ObjectC的值中,将A String作为键和A List作为值.此TreeMap和内部的list已使用s:iterator和s:textfield显示在jsp上,并且正在正确显示.即S:TextField内部的"值"是正确的.现在,当修改文本字段时出现问题.我们如何在操作类中的ObjectC中捕获修改值?在此处给出的代码后,键(" key1")出现在操作中,但值为null. Java代码 public class ObjectA implements Serializable { private Integer attr1; private List objB; //...getters and setters.... public class ObjectB implements Serializable { private Inte
是否有一种方法可以从对象列表中访问特定对象的属性. 我有一个实验室列表,每个实验室对象都有多个属性.使用标签,我们可以从实验室列表中访问lab1对象的属性1吗? 假设:我的Lab对象之一的属性称为labname,带有值" bp",另一个实验室对象具有" a1c"的labname. 现在,如果我想使用labname> labname作为" bp"访问实验室对象的labvalue属性? 解决方案 如果您不想使用地图,这很容易,那么您可以利用 OGNL的列表选择功能: 从收藏中选择 ognl提供了一种使用表达式选择一些表达式的简单方法 集合中的元素并将结果保存在新集合中. 我们从数据库术语中称此"选择",以选择子集 桌子的行.例如,此表达式: listeners.{? #this instanceof ActionListener} 返回所有听众的列表 ActionListener类. [...] 然后在您描述的情况下,如果您只想过滤列表
我有一个动作课,例如 public class DataProcessor extends ActionSupport{ private JSONObject object; public JSONObject getObject() { return object; } public void setObject(JSONObject object) { this.object = object; } @Override public String execute() throws Exception { ....... return SUCCESS; } } 我的XML映射就像
我在Java Struts 2框架上做. 通常,我可以通过Form.java(动作类)中的GET SET方法从JSP获取数据.以下是我的示例: in main.jsp文件: 因此,我可以通过在"动作类"中通过get set方法获得此文本框名称,以下是 的代码 mainForm.java: private String campaignName = null; public String getCampaignName() { return campaignName; } public void setCampaignName(String campaignName) { this.campaignName = campaignName; } 但是,由于我想使用jQuery做某事,所以我不再使用
我正在从事撑杆.我有一个JSP登录页面,用户可以通过该页面提交他的数据.之后,如果有人想搜索他的数据,他必须输入他的id.我希望该id动态输入. 此id将传递到Java页面.我正在使用JDBC.如何编写查询并设置字符串函数? 这是我的Java代码: // package com.javatpoint; import java.sql.*; import java.util.ArrayList; public class Display { ArrayList list=new ArrayList(); User user= new User(); public ArrayList getList() { return list; } public void setList(ArrayList list) { this.list = list; } pub
我使用Struts2.x,我知道Struts根据请求在操作中创建声明的BEAN对象,以便该操作可用于操作.我一直在研究以了解哪些拦截器/班级在内部使用Struts创建Bean对象.我试图理解内部用于创建Bean对象的逻辑.它是否使用PropertyUtils来填充豆类或其他方式的属性?任何阅读的建议或指针都会有所帮助. 解决方案 内部支撑杆使用ObjectFactory来构建配置定义的所有对象.请参阅有关当您使用 ognl "> ognl 的帮助下,将创建它们.它也是可配置的. PropertyUtils struts2 core不使用 PropertyUtils,但是如果需要commons-beanutils软件包,插件可以使用.
我在Struts 2 ModelBean中将布尔变量称为isABooleanValue,我可以通过在JSP中使用此modelbean.aBooleanValue来看到该值. getter看起来像 public boolean isABooleanValue(){ return isABooleanValue; } setter看起来像这样 public void setABooleanValue(boolean isABooleanValue){ this.isABooleanValue=isABooleanValue; } JSP代码 任何人都可以解释如何从价值堆栈访问错误的变量名称. 编辑 解决方案 在JSP中使用属性是基于指定的Getter方法. modelbean.aBooleanValue调用模型bean中定义
我正在使用Struts 2 Framework,并试图将检查数据库中的用户ID存在的最佳方法是什么. 在我的上一个项目中,我与jQuery Ajax一起做了这一点,但对此不满意. 在此项目中,我正在使用验证框架用于服务器端检查输入字段和客户端的jQuery validate插件. 我有一个DAO课程,可以打电话给DB进行存在检查,我不想使用jQuery Ajax,但宁愿使用Struts 2验证框架. 我可以使用此DAO类的输出,并将其与我的验证XML结合使用,或使用validate方法将其结合在一起?如果我使用验证方法?与执行动作类的执行相比,该方法执行的顺序是什么?我想要以这种格式的订单,首先我进行客户端验证,然后进行服务器端进行验证,然后仅完成服务器端,我需要启动检查是否存在用户ID,然后最终插入DB? 我的字段操作验证文件如下,
我想知道我们是否填充了动作类属性,我们可以直接在结果JSP中访问它们,而无需将它们分配给操作类中的表单? 解决方案 我认为您需要正确定义bean getter方法.说,如果属性命名为id,并且您的操作中有一种称为getId()的方法.然后可以直接在JSP中访问: ognl 表达式: 或 JSTL表达式: 其他解决方案 struts2/xwork1及其taglib朝向OGNL,正在使用 A valueStack对于所有动作属性.这些值不是直接的 可用于JSP2.0/JSTL1.1的表达语言. 要通过OGNL访问它,您只能在Struts标签属性中使用OGNL.例如 public String MyAction extends ActionSupport { private String myAttr; //getter