jsf框架中如何创建servlet,具体步骤和配置是怎么样的?? 5

 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏5(财富值+成长值)
山水阿锐
2015-05-07 · TA获得超过34.3万个赞
知道顶级答主
回答量:23.7万
采纳率:91%
帮助的人:3.2亿
展开全部
您好,这样的:
文件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为当前页。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式