WAP之家:为您提供最全最新的WAP技术,CP.SP.3G等行业资讯。 WAP之家交流论坛全新开放 点击进入>>
WAP资讯 | 3G动态 | SP动态 | 运营商动态 | 内容商动态 | 制造商动态 | 论坛讨论>> 每次自动访问
WAP技术 | WAP源码 | 手机编程 | 手机源码 | 无线技术 | J2ME技术 | 手机软件 添加到收藏夹
IVR技术 | SP资料 | SMS MMS技术 | 商业方案 | IVR下载 | 书籍教程 | 工具软件 语言:繁體中文

WAP之家技术文章WAP教程开发问答在开发WML时使用<html:img>标签应该注意的问题

在开发WML时使用<html:img>标签应该注意的问题
作者:佚名  来源:javayou  发布时间:2008-3-11 20:06:27

正常的情况下该标签生成的HTML代码如
<img src="/img/logo.gif" alt="LOGO">
这段代码很显然是不符合WML页面规范的,因为img标签没有关闭,为了保证我们的页面在所有的手机上都可以查看,我们就必须完全遵循WML的规范,在WML页面中要求是
<img src="/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标签了 :)

[] [返回上一页] [打 印]
文章评论

用户名: 查看更多评论

分 值:100分 85分 70分 55分 40分 25分 10分 0分

内 容:

         (注“”为必填内容。) 验证码: 验证码,看不清楚?请点击刷新验证码