00:00
下边呢,我们就来看一下如何利用OGNL。读取值站里边的内容。那我们需要结合这个OGNL和property标签。那two提供了一个property标签,用来输出值站中的一个属性值。我们现在记录一下做。Two。As property。标签。和。ODNL。表达式来读取。实战中。的属性值,这里边的话我们要说明一下什么叫值战中的属性值呢。
01:06
这个实际上是有两层含义。第一个对于预想债。啊,读取的是。对项占里边某一个对象的属性值。某一个对象的属性值。而对于外部战。啊,这个读取的是,呃。Request session application的属性值,或者是一个请求参数的值。Request。Session。Application的一个属性值或。
02:01
一个请求参数的值。这是我们所谓的实战中的属性值。好了,看一下PPT。我们首先呢来研究如何来读取对象战力对象的属性。Object stack说,如果我要是想访问对象站里面某个对象的属性呢?我们可以采用以下方式之一,就是说object.property name,而对这个属性名的这个使用的话呢,可以点,可以加一个中括号,加上一个单引号,还有一个中括号加上一个双引号,通常情况下我们都使用。第一种方式。因为属性嘛,这个属性通常都是。扎B的一个属性,它里边不会有一些特殊字符,所以说第一个就够用了。
03:01
好了,对象,这里的对象呢,可以用一个从零开始的下标来表示。说零的话呢,表示占顶的对象,一的话,表示占顶以下的第二个对象,那我要是0.message的话,就表示读取占顶对象的message属性。这样来读。再来。若在指定对象里边没有找到指定的属性的话呢,则到指定对象的下一个对象里边去搜索,言外之意就是N的含义是从第N个开始,而不只局限于第N个。看我们这个图,比方说我一点内怎么样,我是从。第一个对象,这上面是第零个哈,第一个对象开始开始搜索,如果找不到的话呢,还会往下找,直到找到为止,要是都没有的话,那就是没有了。
04:07
啊。第三点说,若从占领对象开始搜索的话呢,我们可以省略这个下标好了,我把这三条的话呢整理一下。一起吧。读取。对象站中对象的属性,我们一共是有三点。第一点。如何来读?我们可以使用一个从零开始的下标表示哦,这个的话呢,需要保留啊,如果要是读取的话呢,我们可以采用以下形式之一。
05:02
有两种形式,Object。Property name,这是我们推荐的方式,还可以是object,点没有点这样写。Property或者是object。双引号。Proper通常情况下选用一种方式,因为这是一个属性名,这个属性名里边是没有那个特殊字符的,比方说空格。比方说点,所以说第一种方式可用。对象占理的嘛,它并不是map不占理的哈,好。第二个,我们如何来引用这个对象呢?我们可以通过加下标的方式。来说,比方说呃,占领对象,我们可以这样表示。
06:00
看下边的,我们可以用一个E来表示。那我们举一个例子。比方说。零点。Message就是读取按顶对象的属性。下一个。N的含义是从第N个开始搜索,而不仅限于第N个,刚才的话呢,我们看了一个图。再下一个。说如果从淡定对象开始搜索的话,我们可以省略下标,有时候可以怎么写啊,直接写这个message,当然我们要结合s property标签。联合S。Property。
07:00
标签是什么样子?S那就是S。Proper。Y流属性等于。哎,可以直接写一个message就可以了,当然你也可以写一个。0.message一样的啊,这个我们来说一个哈,这个等同于。淡定对象不是可以把那个零去掉吗?通常情况下的话呢,我们都采用这样的方式去读取属性。就直接从占领对象开始找。OK,具体代码呢看一下。嗯,我我直接把这个里边那个代码复制过来了哈。新建一个包。
08:00
B点。硅谷。Values。把这个直接复制过来。OK,我们就用这个了啊。前面的话呢,我们讲过一个save方法,这个暂时我先给他删了。复制TXT。我直接把这两个DSP放到。目录。把这个关掉。OK,我们先跑一下哦,还跑不了是吧,我还得配置一下叫product save c。找到配置文件。
09:01
Action。Class。方法呢?Massive。Result。这个改一下,直接改成success。好,先跑一下,看看那个效果。跑起来。来,我们填入。CPU。
10:01
1200。哦。哎,我们这个页面的内容有点多,我给他删一下啊。上边呢啊,这种方式解决这个中论码怎么样,解决不了吧。因为这个时候我已经调用了request get parameter,我们应该使用一个filter,那个filter放在stra to那个filter之前,对吧,请知道。ID呢也去掉,因为我们这里边请求的时候呢,没有这个ID。按照呃,Product name product描述价格,这两个也先去掉。出了,这是一个最简单版,来抓一下。好了,现在的话呢,我们就来研究。如何利用s property标签跟OG来读取值站里边的内容?那我们首先想看一下这个值站的状态,可以怎么看呢?我在这个details里边,我可以使用抓图给我们提供的一个标签叫debug。
11:12
这个标签已经倒了哈,我来写一下,然第八个S。Bug狗。放心。大家看这个时候把这个展开。这个叫。对象站是吧,Well content对象站,对象站里边,当我们到这个页面的时候。这个对象站里面有两个对象,一个是product,他是谁啊,当前的action,还有一个叫default provider。哎,我们需要知道这样的一个事实。我这个action会会被抓to自动的放到直站的站点,默认情况下记住一下。
12:01
有这样的一个事实,默认情况下啊,Action。对象会被。Two。自动的放到。直站的判定。大家可能或许会比较关心是吧,我什么时候放的呀,怎么放的呀,这个我们在后边就会讲到,我们现在的话呢,先专注于这个显示。好,有这样的一个事实。回到我们这个D里边来,哪个是啊,这个删了。好了,现在我们说我们可以用s property标签来显示值占属性的值,我写一个。Press with。I。
13:00
Y啊说使用下标的方式来引用。你对象?属性好,找一个看效果。显示了吧?看,这就是我们使用OGL表达式跟s property标签显示的。这是什么呀,我们加了这个呃,下标,实际上的话呢,这个下标是可以省略的,如果你要是读取占顶对象属性的话,我可以去掉。也可以带走。标记,一个标记,两个标记。这个依然可以显示。好了,但是的话呢,我们让这个事情啊变得有点意思。我在我这个save方法里边。
14:04
我获取值站,同时往直站里边放一个对象,我们看一看效果。我先创建一个test。这个test呢,是一个辅助对象。我把当前product的两个属性放到这个case里边去。这两个吧,Name跟D。二写上对应的改善方法。F了,我们找到我们这个product。这个首先。获取实战。获取之战二。创建一个。Test对象。
15:02
对其属性不值三。这个哈。把test的对象压入到值站的。判定OK,看一下我们后边显示的效果。获取值战对象Ali a。等于。Action contacts get contact get value。创建一个text。Object。等于六为其属性赋值。Out d OK。这个呢,我随便写一个a ABB CC DD。再来object的点在name来abcd了。
16:07
把这个放到直站的站定I6.push。放进来。写完。然后呢,我们这个我们看一下,嗯,我在提交之后这个显示的效果。找一个,大家说这块是怎么显示的。我回退啊,填的是CPU英特尔跟1200,那么我按提交之后的话。我这个name跟DS显示的还是他俩吗?Price显示的还是一千二吗?好,先找一个看着。我发现什么呀。价格是OK的。而。这个product name跟这个product dic并不是我提交那个CPU和in,不是了吧,为什么?
17:05
因为我在这里边儿的话呢。我往直站的站顶压了一个对象,是object,此时在站顶的是谁呀?是。Test。而且这个test里边也有。Product描述product name这样的两个属性,于是我在读的时候,我不是读占顶对象的这个属性吗?那这两个被打出来了。而这个没出来,然后的话呢,Price。占顶对象没有,于是的话呢,打的是我占顶对象下一个对象的这个属性。看我们的JSP。好,我现在的话呢,我要改一下,我说我这个DC啊,我要读取。呃,提交表单那个action的属性怎么写?这么写。
18:01
你说C。V,写个几呀,写个一对吧,然后product de看效果。八星哦。大家看是不是英特尔啊,哎,这个就是我们这就是跟我们刚才呃,讲的这个理论内容是一致的。就是说我用这个s property标签如何来读取对象站里边对象的属性呢?我们可以采用这样的方式。这个时候我们说。这个是读取值站里边第二个对象,就第一个第二个索引值是一的那个就是零一嘛。按数量数是第二个,按水的话呢,是第一个。第一个是零啊,读取它的这个属性。而我们这种方式读的是读取直站里边第一个对象的那个属性,那这个的话呢,我们也可以改一下啊,改成。
19:07
S。Property。百6。然这样写,这样写的话呢,相当于什么呀,相当于他。那我读的不是占点对象的吗?我占点对象有这个属性,于是就把那个abcd读出来了,而这个是读取。第二个对象的打开。瞧瞧占领对象的这儿呢?第二个对象呢?这呢,而占领对象没有这个price,所以说这个price显示的是1200。回来。那就是这样的一个流程,那我们通常情况下。啊,不会发生这样的事情,我们这个是什么呢?我们这个是有意而为之,我们通过这样的方式呢,让大家对这个呃直战和读取直战的内容有一个更深层次的了解。
20:14
好,这块我们有一点需要说明哈,在我们到达这个save方法的时候,在直站站点的已经是。当前的action对象。57行哪个断点找一下。走。获取值占。直站找到那个对象站。
21:03
Root大家大家看占领的是谁呀,是不是这个product呀,啊CPU in特尔一千二都有了,如果要是这个时候直接提到页面上的话,那我那个as property property,呃,Product name就是什么CPU吧,好了,我现在的话呢,我往下来创建了test,注意我把这个test那个object对象压到了直能站点找一个,你看这个时候放的是。P。因为我们这个显这product这样显示的话是怎么样,是因为已经重写了这个兔存方法,而这个没重写,所以说是全类名加上艾特哈西曼。那这个的话呢,就跟我们。页面上那个sdbug标签显示的就一致了。OK。回来。那关于使用s property标签读取值站里边对象的属性的话呢,其实也就是这样的几点。
我来说两句