当前位置:首页 > 设计在线 > 网页设计 > WAP > 在开发WML时使用标签应该注意的问题

在开发WML时使用标签应该注意的问题

点击次数:29 次 发布日期:2008-11-22 11:05:27 作者:源代码网
源代码网推荐

正常的情况下该标签生成的HTML代码如
<img src="http://edu.cnzz.cn/img/logo.gif" alt="LOGO">
这段代码很显然是不符合WML页面规范的,因为img标签没有关闭,为了保证我们的页面在所有的手机上都可以查看,我们就必须完全遵循WML的规范,在WML页面中要求是
<img src="http://edu.cnzz.cn/img/logo.gif" alt="LOGO"/> (大家注意此处)
但是为什么<html:img标签没有给我们生成关闭的标志呢? 打开ImgTag->BaseHandlerTag的源码一看才明白其中道理,该标签通过一个参数来控制是否生成关闭符号,但是这个参数并不在标签本身来控制,而是通过另外一个标签来控制的,这个标签就是<html:html> 我们必须给这个标签指定一个参数<html:html xhtml="true"> 后,<html:img>或者其他标签才会生成结束符号.

但是问题来了,很显然<html:html>这标签是无法在WML页面中使用,所以现在有两种解决的办法:

第一种: 根据BaseHandlerTag中的源码来看,如下:

    protected boolean isXhtml() {
        String xhtml =
            (String) this.pageContext.getAttribute(Globals.XHTML_KEY, PageContext.PAGE_SCOPE);
       
        if ("true".equalsIgnoreCase(xhtml)) {
            return true;
        } else {
            return false;
        }
    }

我们只要给pageContext设置一个值为true即可,因此我们可以在使用<html:img>标签前执行下面代码:
pageContext.setAttribute(Globals.XHTML_KEY, "true", PageContext.PAGE_SCOPE);

第二种: 重载isXhtml方法,我们重新实现一个标签库的类NewImgTag,让该类扩展ImgTag,代码如下:

/**
 * 图像标签
 * @author liudong
 */
public class NewImgTag extends org.apache.struts.taglib.html.ImgTag {

 protected boolean isXhtml() {
  return true;
 }
}

当然还需要自己新增一个标签库的定义文件,并把struts-html.tld中关于img标签的定义拷贝过来修改一下类的名称即可.

如此便可以在WML中使用img标签了 :)

源代码网供稿.
网友评论 (0)
会员中心
设计在线
本站推荐
设计在线之精华