Twenka

A simple person, living a simple life in every simple day

BlogJava 首页 新随笔 联系 聚合 管理
  3 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks

2006年12月1日 #

1.div标签直接包容tr标签:语法检测通过,但div不生效。例如,对于如下代码,table的内容还会在页面上显示出来。
<table>
    
<div id="divTest" style="display: none">
        
<tr>
            
<th>title</th>
        
</tr>
        
<tr>
            
<td>value</td>
        
</tr>
    
</div>
</table>


2.div标签直接包容td或th标签:语法检测不通过。提示错误为“Invalid location of tag (div).”。

合法有效的组合方式有如下三种:
1.div标签包容整个table标签
2.div标签置于th标签之内
3.div标签置于td标签之内
posted @ 2006-12-08 12:32 twenka 阅读(2891) | 评论 (0)编辑 收藏

ActionServlet对于接收到的HTTP请求,先构造FormBean(ActionForm),再调用对应Action的“public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception”方法处理请求。以下是与FormBean(ActionForm)构造相关的流程,明了该流程对于理解struts-config.xml中各相关配置项含义以及Struts利用FormBean(ActionForm)进行数据传递的机制大有裨益。

o_FormBean.GIF

posted @ 2006-12-06 02:23 twenka 阅读(2287) | 评论 (0)编辑 收藏

Form提交时,只有CheckBox处于勾选状态,生成的HTTP Request中的查询字符串才会包含CheckBox对应的参数项;否则,生成的HTTP Request中的查询字符串中无CheckBox对应的参数项。

例如,对于以下这个HTML Form(使用了Struts HTML Tag):

<html:form action="/checkAction.do" method="GET">
    
<html:checkbox property="checked" value="true"/><br/>
    
<html:submit/><html:reset/>
</html:form>

当用户勾选页面上的checkbox并提交时,HTTP请求中的查询字符串是:"checked=true";如果用户没有勾选checkbox就提交,HTTP请求则无查询字符串(request.getQueryString()返回null)。这样就导致一个问题:每当用户取消checkbox选中状态并提交时,Struts不会调用ActionForm(设为CheckForm)中的setChecked(boolean bool)方法将checked属性设为false。

解决之道是在CheckForm中override其父类的reset(ActionMapping mapping, HttpServletRequest request)方法(父类ActionForm的reset(ActionMapping mapping, HttpServletRequest request)方法只是一个空实现):

public void reset(ActionMapping mapping, HttpServletRequest request) {
    setChecked(
false);
}

Struts在从HTTPRequest中获取参数值填充到ActionForm的各个属性之前会调用ActionForm的reset()方法。这样,我们就实现了“CheckForm的checked属性值为false,除非用户在页面上选中了checkbox并提交”的逻辑。
posted @ 2006-12-01 12:00 twenka 阅读(3942) | 评论 (0)编辑 收藏