Java企业版JavaEE 6+中提供的JSF 2+的一项不错的功能是,您可以将参数传递给任何操作组件(例如commandButtoncommandLink组件)的操作方法。


基于此,您可以最大程度地减少托管bean中的方法数量。

另外,为了最小化在bean内部设置的许多参数,动作可以使用这些参数来决定导航逻辑,如果您的bean的作用域大于请求作用域,则可以减少内存消耗。

怎么运行的:

  1. 打开您喜欢的IDE,我将使用Netbeans 7.4.1 。 (使用任何支持JavaEE 6或7的IDE)。
  2. 创建Web项目。
    文件–>新建项目–> Java Web(左窗格) –> Web应用程序(右窗格) –>下一步。
  3. 随便命名(对我来说就是JSFeatures–>下一步–>服务器Glassfish4 –> Java EE 7 Web配置文件–>上下文路径“ / JSFeatures” –>下一步。

  4. 从框架中选择“ Java Server Faces-> Finish。

  5. 您应该具有以下项目结构:

  6. 右键单击JSFeatures项目->新的“ JSF Managed Bean ”。 及其名称和配置如下:

  7. 在编辑器页面中打开Bean的情况下,将以下代码复制并粘贴到package语句之后:
    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.RequestScoped;/*** @author mohamed_taman*/
    @ManagedBean(name = "jSFeatBean")
    @RequestScoped
    public class JSFeatursBean {private String result;public String getResult() {return result;}public void setResult(String result) {this.result = result;}public JSFeatursBean() {}public Object addNumbers(int num1,int num2) {setResult("Hi there I am an action method to add numbers.");return null;}
    }
  8. 打开默认生成的index.xhtml ,然后复制以下代码并将其粘贴到文件中:
    <?xml version='1.0' encoding='UTF-8' ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml"xmlns:h="http://xmlns.jcp.org/jsf/html"><h:head><title>Facelet Title</title></h:head><h:body>Hello from Facelets<h:form><p><h:outputText value="#{jSFeatBean.result}"/></p>
    <h:commandButton type="submit"value="Submit"action="#{jSFeatBean.addNumbers}"/></h:form></h:body>
    </html>
  9. 右键单击index.xhtml,然后单击–> 运行 ; 您应该会看到以下内容:

  10. 单击提交按钮,观察h:outputText值,其值应为“ Hi,我是一个操作方法。
  11. 现在一切正常。 让我们做我需要演示的实际工作。
  12. addNumbers()方法签名更改为以下内容( 无需重新启动应用程序服务器 ):
    1. Bean方法:

      public Object addNumbers(int num1) {int res = 0;res = num1;if (res == 0) {setResult("Hi there I am an action method to add numbers.");} else {setResult("Final result is: " + res);}return null;}
    2. 然后您的按钮呼叫到:
      <h:commandButton type="submit"value="Submit" action="#{jSFeatBean.addNumbers(1)}"/>
    3. 按下按钮,输出文本值应为:
      Final result is: 1
  13. 再做一次:
    1. Bean方法:

      public Object addNumbers(int num1, int num2) {int res = 0;res = num1 + num2;if (res == 0) {setResult("Hi there I am an action method to add numbers.");} else {setResult("Final result is: " + res);}return null;}
    2. 然后您的按钮呼叫到:
      <h:commandButton type="submit"value="Submit" action="#{jSFeatBean.addNumbers(1,2)}"/>
    3. 按下按钮,输出文本值应为:
      Final result is: 3

注意:该参数可能具有不同的参数类型,但预计不会是同一类型,该方法也可能返回用于导航到其他页面的值,在此示例中,该参数返回null表示在同一页面上。

我非常喜欢此功能,非常有用,方便,编码愉快。

资源:

  • JavaEE 7教程(7.5导航模型)。
参考: JSF:直接从页面将参数传递给JSF动作方法,这是我们的JCG合作伙伴 Mohamed Taman在“ 通过科学和艺术改善生活”博客上的JavaEE 6+的一项不错功能 。

翻译自: https://www.javacodegeeks.com/2014/01/jsf-passing-parameters-to-jsf-action-methods-from-page-directly-a-nice-feature-of-javaee-6.html

JSF:直接从页面将参数传递给JSF操作方法,这是JavaEE 6+的一个不错的功能相关推荐

  1. jsf 后台参数到页面_JSF:直接从页面将参数传递给JSF操作方法,这是JavaEE 6+的一个不错的功能...

    jsf 后台参数到页面 其中一个JSF 2+不错的特点出现在Java企业版的JavaEE 6 +,是你可以传递参数给喜欢的commandButton和commandLink组件的任何动作元件操作方法. ...

  2. 如何将命令行参数传递给Node.js程序?

    我有一个用Node.js编写的Web服务器,我想使用一个特定的文件夹启动. 我不确定如何在JavaScript中访问参数. 我正在像这样运行节点: $ node server.js folder 这是 ...

  3. 通过BeanShell获取UUID并将参数传递给Jmeter

    有些HTTPS请求报文的报文体中包含由客户端生成的UUID,在用Jmeter做接口自动化测试的时候,因为越过了客户端,直接向服务器端发送报文,所以,需要在Jmeter中通过beanshell获取UUI ...

  4. java+hadoop配置参数_将Hadoop参数传递给Java代码

    我有一个Uber jar执行一些级联ETL任务. jar的执行方式如下: hadoop jar munge-data.jar 我希望在作业启动时将参数传递给jar,例如 hadoop jar mung ...

  5. php向bat中传递参数,php-将参数传递给PHPUnit

    php-将参数传递给PHPUnit 我开始编写PHPUnit测试,并且希望这些测试可以在开发人员的机器以及我们的服务器上运行. 开发人员计算机的设置与服务器不同,甚至彼此不同. 要在这些不同的地方运行 ...

  6. java变量传递给asp,我应该如何将多个参数传递给ASP.Net Web API GET?

    回答(10) 2 years ago 这个记录标记是什么意思?如果这仅用于记录目的,我将使用GET并禁用所有缓存,因为您要记录此资源的每个查询 . 如果记录标记有另一个目的,POST就是要走的路 . ...

  7. plsql 往视图传参数_我们可以将参数传递给SQL中的视图吗?

    20 个答案: 答案 0 :(得分:113) 如前所述,你做不到. 可能的解决方案是实现存储的函数,例如: CREATE FUNCTION v_emp (@pintEno INT) RETURNS T ...

  8. 将参数传递给Bash函数

    我试图搜索如何在Bash函数中传递参数,但是出现的是如何从命令行传递参数. 我想在我的脚本中传递参数. 我试过了: myBackupFunction("..", "... ...

  9. 如何将参数传递给setTimeout()回调?

    我有一些如下的JavaScript代码: function statechangedPostQuestion() {//alert("statechangedPostQuestion&quo ...

最新文章

  1. Docker初学3:Docker的常用命令
  2. 关于学习Python的一点学习总结(50->描述符)
  3. ubuntu 修改或创建交换分区的大小
  4. win8 远程桌面时提示凭证不工作问题的终极解决办法
  5. 【深度学习】预训练的卷积模型比Transformer更好?
  6. 服务的默认端口_Informatica端口管理
  7. 『数据库』怎样设计一个数据库
  8. (JAVA)IO流之读写单个字节和复制文本文件
  9. MVC教程第四篇:传递表单数据
  10. Day1 - Python基础1
  11. APIO2010巡逻(树上带权直径)
  12. Spring cloud--鸿鹄Cloud分布式微服务云系统—Config
  13. 杭电 1421 搬寝室
  14. hosts文件位置和修复hosts文件
  15. 计算机英语听力速记...,2019考研计算机英语听力速记技巧
  16. SSM+垃圾分类小助手 毕业设计-附源码191356
  17. 地震应急综合解决方案
  18. S4 BOM批量修改
  19. c++: 已经声明过变量,依然报 C2065:未声明的标识符错误 解决办法
  20. 你对前端开发岗的看法

热门文章

  1. Navicat Premium 11 12 闪退
  2. 磁珠 符号_贴片磁珠功能_贴片磁珠应用
  3. python中debug有什么用途_史上最方便的Python Debug工具
  4. mybatis_user_guide(4) Mapper XML 文件
  5. SQL编程---存储过程和存储函数
  6. 托管 非托管_如何在托管的Kubernetes上备份Neo4J
  7. php cdi_通过MicroProfile上下文传播增强了CDI上下文和隔板
  8. java中的深度克隆浅克隆_了解Java中的可克隆接口
  9. 数据结构压缩_将数据压缩到数据结构中
  10. intext:企业_企业中的微服务:敌是友?