jsf框架中如何创建servlet,具体步骤和配置是怎么样的?? 5
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
1个回答
展开全部
您好,这样的:
文件faces-config.xml定义了导航规则,决定JSF在用户点击网页中的命令按钮时做什么,网页的路径由标记(/edit.jsp)指定。由元素分别定义了两个导航块(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包含由标记生成的两个按钮。每个都有一个标识(ID)、一个标签、一个命令名称(这里没有使用,但JSF需要)以及一个action或actionRef属性:
<f:use_faces> <h:form formName="pform"> .......... <p> <h:command_button id="view" label="View" commandName="viewCmd" action="viewOutcome"/> <h:command_button id="boldUpperCase" label="Bold Upper Case / View" commandName="boldUpperCaseCmd" actionRef="pbean.boldUpperCaseAction"/> </h:form> </f:use_faces>
上面JSP代码生成如下HTML片断:
<form method="post" action="/usingjsf/faces/edit.jsp"> .......... <p> <input type="submit" name="view" value="View"> <input type="submit" name="boldUpperCase" value="Bold Upper Case / View"> </form>
JSF会在每次浏览器提交用户输入时验证表单中的数据。如果验证器没有发出错误信号而且没有类型转换错误,JSF便会分析导航块(navigation case)。对于第一个按钮,JSF会得到action属性的值viewOutcome,该值与第二个导航块的元素中的文本匹配。因此,JSF将HTTP请求转发给view.jsp,文件view.jsp的路径包含在第二个导航块的元素中。
当用户点击第二个按钮时,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 "viewOutcome"; else { setBold(true); setText(ucText); return "editOutcome"; } } } }
如果bold(粗体)属性的值为true(真)并且文本的所有字符为大写的,JSF就按照第二个导航块中的定义,与另一个按钮情况一样JSF将HTTP请求转发给view.jsp。另外,invoke()方法会将bold属性设为true,并将文本的所有字符改为大写的,最后返回字符串editOutcome,使JSF按照第一个导航块的定义,保持edit.jsp为当前页。
文件faces-config.xml定义了导航规则,决定JSF在用户点击网页中的命令按钮时做什么,网页的路径由标记(/edit.jsp)指定。由元素分别定义了两个导航块(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包含由标记生成的两个按钮。每个都有一个标识(ID)、一个标签、一个命令名称(这里没有使用,但JSF需要)以及一个action或actionRef属性:
<f:use_faces> <h:form formName="pform"> .......... <p> <h:command_button id="view" label="View" commandName="viewCmd" action="viewOutcome"/> <h:command_button id="boldUpperCase" label="Bold Upper Case / View" commandName="boldUpperCaseCmd" actionRef="pbean.boldUpperCaseAction"/> </h:form> </f:use_faces>
上面JSP代码生成如下HTML片断:
<form method="post" action="/usingjsf/faces/edit.jsp"> .......... <p> <input type="submit" name="view" value="View"> <input type="submit" name="boldUpperCase" value="Bold Upper Case / View"> </form>
JSF会在每次浏览器提交用户输入时验证表单中的数据。如果验证器没有发出错误信号而且没有类型转换错误,JSF便会分析导航块(navigation case)。对于第一个按钮,JSF会得到action属性的值viewOutcome,该值与第二个导航块的元素中的文本匹配。因此,JSF将HTTP请求转发给view.jsp,文件view.jsp的路径包含在第二个导航块的元素中。
当用户点击第二个按钮时,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 "viewOutcome"; else { setBold(true); setText(ucText); return "editOutcome"; } } } }
如果bold(粗体)属性的值为true(真)并且文本的所有字符为大写的,JSF就按照第二个导航块中的定义,与另一个按钮情况一样JSF将HTTP请求转发给view.jsp。另外,invoke()方法会将bold属性设为true,并将文本的所有字符改为大写的,最后返回字符串editOutcome,使JSF按照第一个导航块的定义,保持edit.jsp为当前页。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询