选择显示字体大小

使用jsf(java server faces)开发(三)

下拉列表(drop-down list)

   <h:selectone_menu>标记用于生成包含几个颜色选项的下拉列表。

   <h:selectitem>标记包含在<h:selectone_menu>中,作为下拉列表的选项:



<f:use_faces>
    <h:form formname=&quot;pform&quot;>
        ..........
        <p><h:output_text value=&quot;color:&quot;/><br>
        <h:selectone_menu id=&quot;color&quot; valueref=&quot;pbean.color&quot;>
            <f:validate_required/>
            <h:selectitem itemvalue=&quot;black&quot; itemlabel=&quot;black&quot;/>
            <h:selectitem itemvalue=&quot;red&quot; itemlabel=&quot;red&quot;/>
            <h:selectitem itemvalue=&quot;blue&quot; itemlabel=&quot;blue&quot;/>
            <h:selectitem itemvalue=&quot;green&quot; itemlabel=&quot;green&quot;/>
        </h:selectone_menu>
        <br><h:output_errors for=&quot;color&quot;/>
        ..........
    </h:form>
</f:use_faces>



   上面的jsp代码生成下面的html片断:



<form method=&quot;post&quot; action=&quot;/usingjsf/faces/edit.jsp&quot;>
    ..........
    <p>color:<br>
    <select name=&quot;color&quot; size=&quot;1&quot;>
        <option value=&quot;black&quot;>black</option>
        <option value=&quot;red&quot;>red</option>
        <option value=&quot;blue&quot;>blue</option>
        <option value=&quot;green&quot; selected>green</option>
    </select>
    <br>
    ..........
</form>


   下拉列表定义为color,类型为字符串(string):



public class pbean implements java.io.serializable {

    ..........

    private string color;

    public string getcolor() {
        return color;
    }

    public void setcolor(string color) {
        this.color = color;
    }

    ..........

}


   当html表单被生成时,jsf将html属性selected加入到值与javabean模型color属性相同的列表项中。假设没有验证错误,jsf收到包含新颜色值的用户输入后会刷新javabean属性。



   单选钮(radio button)

<h:selectone_radio>与<h:selectitem>标记用于生成一组单选钮:



<f:use_faces>
    <h:form formname=&quot;pform&quot;>
        ..........
        <p><h:output_text value=&quot;alignment:&quot;/><br>
        <h:selectone_radio id=&quot;align&quot; valueref=&quot;pbean.align&quot;
                layout=&quot;line_direction&quot;>
            <f:validate_required/>
            <h:selectitem itemvalue=&quot;left&quot; itemlabel=&quot;left&quot;/>
            <h:selectitem itemvalue=&quot;center&quot; itemlabel=&quot;center&quot;/>
            <h:selectitem itemvalue=&quot;right&quot; itemlabel=&quot;right&quot;/>
        </h:selectone_radio>
        <br><h:output_errors for=&quot;align&quot;/>
        ..........
    </h:form>
</f:use_faces>


   上面的jsp代码生成如下代码:



<form method=&quot;post&quot; action=&quot;/usingjsf/faces/edit.jsp&quot;>
    ..........
    <p>alignment:<br>
    <table border=&quot;0&quot;>
        <tr>
            <td><input type=&quot;radio&quot; checked
                name=&quot;align&quot; value=&quot;left&quot;> left</td>
            <td><input type=&quot;radio&quot;
                name=&quot;align&quot; value=&quot;center&quot;> center</td>
            <td><input type=&quot;radio&quot;
                name=&quot;align&quot; value=&quot;right&quot;> right</td>
        </tr>
    </table>
    <br>
    ..........
</form>


   单选钮定义为align:



public class pbean implements java.io.serializable {

    ..........

    private string align;

    public string getalign() {
        return align;
    }

    public void setalign(string align) {
        this.align = align;
    }

    ..........

}


   html表单生成时,jsf将html属性checked加入到与javabean模型的align属性值相同的单选钮中。假如没有验证错误,jsf收到新摆放位置的用户输入时刷新javabean属性。



   复选钮(checkbox)

   文件edit.jsp包含3个由<h:selectboolean_checkbox>标记生成的复选钮。这些界面组件包含在由<h:panel_grid>与<h:panel_group>标记生成的表格(table)中:



<f:use_faces>
    <h:form formname=&quot;pform&quot;>
        ..........
        <p><h:output_text value=&quot;style:&quot;/><br>
        <h:panel_grid columns=&quot;3&quot; border=&quot;0&quot; cellspacing=&quot;5&quot;>
            <h:panel_group>
                <h:selectboolean_checkbox id=&quot;bold&quot;
                    valueref=&quot;pbean.bold&quot;/>
                <h:output_text value=&quot;bold&quot;/>
            </h:panel_group>
            <h:panel_group>
                <h:selectboolean_checkbox id=&quot;italic&quot;
                    valueref=&quot;pbean.italic&quot;/>
                <h:output_text value=&quot;italic&quot;/>
            </h:panel_group>
            <h:panel_group>
                <h:selectboolean_checkbox id=&quot;underline&quot;
                    valueref=&quot;pbean.underline&quot;/>
                <h:output_text value=&quot;underline&quot;/>
            </h:panel_group>
        </h:panel_grid>
        ..........
    </h:form>
</f:use_faces>



   上面代码生成如下片断:



<form method=&quot;post&quot; action=&quot;/usingjsf/faces/edit.jsp&quot;>
    ..........
    <p>style:<br>
    <table border=&quot;0&quot; cellspacing=&quot;5&quot;>
        <tr>
            <td><input type=&quot;checkbox&quot;
                 name=&quot;bold&quot;>bold</td>
            <td><input type=&quot;checkbox&quot;  
                 name=&quot;italic&quot; checked>italic</td>
            <td><input type=&quot;checkbox&quot;  
                 name=&quot;underline&quot;>underline</td>
        </tr>
    </table>
    ..........
</form>


   3个复选钮分别与类型为布尔(boolean)的bold、italic、underline绑定在一起:



public class pbean implements java.io.serializable {

    ..........

    private boolean bold;

    public boolean isbold() {
        return bold;
    }

    public void setbold(boolean bold) {
        this.bold = bold;
    }
    private boolean italic;

    public boolean isitalic() {
        return italic;
    }

    public void setitalic(boolean italic) {
        this.italic = italic;
    }
    private boolean underline;

    public boolean isunderline() {
        return underline;
    }

    public void setunderline(boolean underline) {
        this.underline = underline;
    }

    ..........

}


    生成html表单时,jsf将checked属性加入到每一个javabean属性为真(true)的复选钮中。假如没有验证错误,jsf收到用户输入后就会刷新javabean属性。



   在本例中,复选钮是分别独立生成的。jsf也提供了<h:selectmany_checkboxlist>标记用于生成一组复选钮。还提供了<h:panel_list>和<h:panel_data>两个标记用于从集合与数组中生成表格。



   命令按钮(command buttons)

   文件faces-config.xml定义了导航规则,决定jsf在用户点击网页中的命令按钮时做什么,网页的路径由<from-tree-id>标记(/edit.jsp)指定。由<navigation-case>元素分别定义了两个导航块(navigation case):



..........
<faces-config>
    <navigation-rule>
        <from-tree-id>/edit.jsp</from-tree-id>
        <navigation-case>
            <from-outcome>editoutcome</from-outcome>
            <to-tree-id>/edit.jsp</to-tree-id>
        </navigation-case>
        <navigation-case>
            <from-outcome>viewoutcome</from-outcome>
            <to-tree-id>/view.jsp</to-tree-id>
        </navigation-case>
    </navigation-rule>
    ..........
</faces-config>



   文件edit.jsp包含由标记<h:command_button>生成的两个按钮。每个都有一个标识(id)、一个标签、一个命令名称(这里没有使用,但jsf需要)以及一个action或actionref属性:



<f:use_faces>
    <h:form formname=&quot;pform&quot;>
        ..........
        <p>
        <h:command_button id=&quot;view&quot; label=&quot;view&quot;
            commandname=&quot;viewcmd&quot; action=&quot;viewoutcome&quot;/>
        <h:command_button id=&quot;bolduppercase&quot;
            label=&quot;bold upper case / view&quot;
            commandname=&quot;bolduppercasecmd&quot;
            actionref=&quot;pbean.bolduppercaseaction&quot;/>
    </h:form>
</f:use_faces>



    上面jsp代码生成如下html片断:



<form method=&quot;post&quot; action=&quot;/usingjsf/faces/edit.jsp&quot;>
    ..........
    <p>
    <input type=&quot;submit&quot; name=&quot;view&quot; value=&quot;view&quot;>
    <input type=&quot;submit&quot; name=&quot;bolduppercase&quot;
        value=&quot;bold upper case / view&quot;>
</form>


   jsf会在每次浏览器提交用户输入时验证表单中的数据。如果验证器没有发出错误信号而且没有类型转换错误,jsf便会分析导航块(navigation case)。对于第一个按钮,jsf会得到action属性的值viewoutcome,该值与第二个导航块的<from-outcome>元素中的文本匹配。因此,jsf将http请求转发给view.jsp,文件view.jsp的路径包含在第二个导航块的<to-tree-id>元素中。



   当用户点击第二个按钮时,jsf则调用pbean对象的getbolduppercaseaction()方法。该方法返回一个bolduppercaseaction的实例,bolduppercaseaction则是pbean的内部类。接着,jsf调用invoke()方法,该方法返回一个在运行时决定的结果而不是固定不变的html文件:



public class pbean implements java.io.serializable {

    ..........

    public bolduppercaseaction getbolduppercaseaction() {
        return new bolduppercaseaction();
    }

    public class bolduppercaseaction
            extends javax.faces.application.action {
        public string invoke() {
            string uctext = gettext().touppercase();
            if (isbold() && gettext().equals(uctext))
                return &quot;viewoutcome&quot;;
            else {
                setbold(true);
                settext(uctext);
                return &quot;editoutcome&quot;;
            }
        }
    }

}


   如果bold(粗体)属性的值为true(真)并且文本的所有字符为大写的,jsf就按照第二个导航块中的定义,与另一个按钮情况一样jsf将http请求转发给view.jsp。另外,invoke()方法会将bold属性设为true,并将文本的所有字符改为大写的,最后返回字符串editoutcome,使jsf按照第一个导航块的定义,保持edit.jsp为当前页。



 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons