zoukankan      html  css  js  c++  java
  • Struts中html:button、html:submit、html:cancel等标签中的文字如何国际化?

    Struts 中html:button、html:submit、html:cancel等标签,这些tag的各项属性中都没有一项是用来国际化的,说白一点就是没有 一个属性是可以给我们填message resource的key的,这就给国际化带来了问题,因为这些都是按钮,按钮上的文字不可能我们手动在代码中通过value这项属性来写死。

    有了问题,就要查struts的资料和他的example,发现了原来要这样解决: 

        <html:submit property="submit" styleClass="bottonyellow">
            
    <bean:message key="login.submitbtnvalue"/>
        
    </html:submit> 

    其中,这些tag中,property这个属性是必须的,这个属性相当于输出html中的name=...,所以是必须的,如果要国际化按钮上的文字,那 么需要手动加入bean:message这一行。为什么struts能这样来实现国际化呢?查看了struts的源码,有了一些意外收获。

    原 来在jsp的tag库的规范中,有几个方法,以前一直没理解:do_starttag、do_afterbody、do_endtag,现在明白了,当碰 到标签时,触发do_starttag,当碰到标签结束时,触发do_endtag,象上面那种情况,当触发到标签之间包含的内容时(即body部分), 就会触发do_afterbody(相信还有do_startbody等类似方法),struts的ButtonTag这个类就是通过在 do_afterbody方法中添加代码,将value属性重新置成我们body指定的值,来实现国际化button上的文字的目的的。以下给出 struts的ButtonTag.java的部分源码:

        /**
             * Process the start of this tag.
             * 
    @exception JspException if a JSP exception has occurred
             
    */
            
    public int doStartTag() throws JspException {

                
    // Do nothing until doEndTag() is called
                this.text = null;
                
    return (EVAL_BODY_TAG);

            }


            
    /**
             * Save the associated label from the body content (if any).
             * 
    @exception JspException if a JSP exception has occurred
             
    */
            
    public int doAfterBody() throws JspException {

                
    if (bodyContent != null) {
                    String value 
    = bodyContent.getString().trim();
                    
    if (value.length() > 0)
                        text 
    = value;
                }
                
    return (SKIP_BODY);

            }


            
    /**
             * Process the end of this tag.
             * <p>
             * Support for indexed property since Struts 1.1
             * 
    @exception JspException if a JSP exception has occurred
             
    */
            
    public int doEndTag() throws JspException {

                
    // Acquire the label value we will be generating
                String label = value;
                
    if ((label == null&& (text != null))
                    label 
    = text;
                
    if ((label == null|| (label.trim().length() < 1))
                    label 
    = "Click";

                
    // Generate an HTML element
                StringBuffer results = new StringBuffer();
                results.append(
    "<input type=\"button\"");
                
    if (property != null) {
                    results.append(
    " name=\"");
                    results.append(property);
                    
    // * @since Struts 1.1
                    if( indexed )
                        prepareIndex( results, 
    null );
                    results.append(
    "\"");
                }
                
    if (accesskey != null) {
                    results.append(
    " accesskey=\"");
                    results.append(accesskey);
                    results.append(
    "\"");
                }
                
    if (tabindex != null) {
                    results.append(
    " tabindex=\"");
                    results.append(tabindex);
                    results.append(
    "\"");
                }
                results.append(
    " value=\"");
                results.append(label);
                results.append(
    "\"");
                results.append(prepareEventHandlers());
                results.append(prepareStyles());
                results.append(getElementClose());

                
    // Render this element to our writer
                TagUtils.getInstance().write(pageContext, results.toString());

                
    // Evaluate the remainder of this page
                return (EVAL_PAGE);

            }
  • 相关阅读:
    公有云数据库服务的申请与使用
    linux集群
    shell基础知识
    LNMP环境配置
    LAMP环境搭建与配置
    12月17日linux学习
    12月16日linux学习(文档的压缩与打包)
    12月13、14号linux学习
    12月12日linux学习
    目录结构
  • 原文地址:https://www.cnblogs.com/super119/p/1988605.html
Copyright © 2011-2022 走看看