目录[隐藏]
|
在我们的一些业务中,很可能会有如下的地址参数: xxxx.html?action=input xxxx.html?action=list
用的一个挂件,但要对应不同的页面,挂件的代码很可能是这样子:
XxxxWdiget.Java: protected void display(Map<String, String> params) { if(action.equals("input")){ // 一些业务逻辑 } if(action.equals("list")){ // 一些业务逻辑 } }
其中action参数在基类中已经声明并自动由reqeust中读取。
<pagename>_<action>.html,如, 我们的widget.xml中的配置可能如下:
<widget id="1"> <type>xxx</type> <folder>widget_html</folder> <custom_page>one_page</custom_page> </widget>
这时,xxxx.html?action=input对应的页面是:one_page_input.html xxxx.html?action=list对应的页面是:one_page_list.html
仅当参数actionpage值为yes时此机制有效
一般情况我们会通过在widget.xml定义挂件的参数,但有时会需要request中动态的获取参数, 如商品列表,需要由goods_list.html?cat_id=1中将cat_id对应到挂件的参数中 可通过在widget.xml中指定reqparams参数来实现。
<widget id="1"> <type>goods_list</type> <reqparams>cat_id</reqparams> </widget>
上述配置,当url为goods_list.html?cat_id=1时等同于:
<widget id="1"> <type>goods_list</type> <cat_id>1</cat_id> </widget>
reqparams可指定多个,由,号分隔
在嵌套某些特殊的页面时,有可能需要在某个挂件中使用另一个挂件的html。 如:在商品的详细挂件页面中,使用评论页面的html。 将ischild参数指定为yes后,在其它挂件中通过${widget_widgetid}可以使用此挂件的html.
要使用其它挂件html的挂件一定要声明在被使用的挂件之后
<widget id="ask"> <type>goods_ask</type> <folder>detail</folder> <custom_page>goods_ask</custom_page> <ischild>yes</ischild> </widget> <widget id="detail"> <type>goods_spec</type> <folder>detail</folder> <custom_page>wgt_detail</custom_page> </widget>
如上述代码所示,在wgt_detal.html中,可以使用${widget_ask} 来显示评论的html
是否校验会员身份,指定此参数为yes后,如果非会员访问此挂件,则跳转至member_login.html。 实际上,是返回如下html代码:
<script>location.href='member_login.html'</script>
true
true false
此参数可使挂件不解析相应的html,而只是做一些逻辑运算和向挂件的上下文中压入变量,以便在另一挂件中使用这些变量。
使用此参数的目的大多数是为了组合几个挂件来一起使用
例如:有挂件widget1和widget2,在widget1中会压入变量 foo,且配置其showhtml参数为false,并且在widgets.xml声明的顺序widget1 在widget2之前
同在widget2的定义html中可以使用foo变量。