当前位置: 首页 > 知识库问答 >
问题:

Apache Tomee 7.0.1上h:SelectoneRadio的奇怪问题

齐文林
2023-03-14

我无法在最简单的JSF2.2页面上使用f:ajax侦听器。赋值,但监听器是聋子。奇怪的是,如果我将h:selectoneRadio替换为h:selectoneMenu,同样的代码工作得非常好。下面是HTML:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://xmlns.jcp.org/jsf/core"
      xmlns:h="http://xmlns.jcp.org/jsf/html">

<h:head>
  <title>Test</title>
</h:head>
<h:body>
  <h:form id="f" >
    <h:selectOneRadio id="r" value="#{test.mode}">
      <f:selectItem itemValue="One"/>
      <f:selectItem itemValue="Two"/>
      <f:selectItem itemValue="Three"/>
      <f:ajax render="@form" execute="@form" listener="#{test.listener2()}"/>
    </h:selectOneRadio>
    <br/>
    <h:outputText id="out" value="#{test.mode}"/>
  </h:form>
</h:body>
</html>
@Named
@SessionScoped
public class Test implements Serializable {

  private final static Logger LOG = Logger.getLogger(Test.class.getName());

  private String mode;

  public String getMode() {
    return mode;
  }

  public void setMode(String mode) {
    this.mode = mode;
    LOG.info("Mode setter: " + mode);
  }

  public void listener1(AjaxBehaviorEvent event) throws AbortProcessingException {
    LOG.info("Mode listener 1: " + mode);
  }

  public void listener2()  {
    LOG.info("Mode listener 2: " + mode);
  }

}

对于h:selectoneradio两种侦听器方法类型都不触发。将bean制作为@managedbean和使用不同的ajax事件类型也无济于事。

该问题出现在Apache Tomee升级到7.0.1版本(MyFaces 2.2.10,JSF 2.2)之后。MyFaces到2.2.11也有同样的问题。

web应用程序绑定在ear中,没有加载其他JSF库,没有Primefaces和类似的程序,没有servlet过滤器,什么都没有--一个纯粹的JSF2.2应用程序。

共有1个答案

仲鸿风
2023-03-14

MyFaces中有一个bug,将在MyFaces 2.2.12中修复。如果需要立即解决方案,使用MyFaces快照,它们似乎工作正常,只需将它们放在Tomee的lib文件夹中,而不是myfaces-api-*myfaces-impl-*的库存版本。

https://issues.apache.org/jira/browse/myfaces-4068

 类似资料:
  • 我尝试使用PARSEDATETIME解析H2数据库中格式为4/24/2022 6:03:30 pm的时间戳。 它就像我电脑上的魅力一样工作。 但是,如果它在客户端的计算机上运行,则会导致以下错误消息: org . H2 . JDBC . jdbcsqldata exception:解析“4/24/2022 6:03:30 pm”时出错; 原因:Java . time . format . date

  • 问题内容: 这是目录树: 在main.go中: 在client_test.go中: 错误: 我已经阅读了如何在golang中使用自定义软件包?而且我认为我有和这个人一样的解决方案,但是我只是不知道如何解决这个问题。请帮忙。 去环境: 问题答案: 命令去,测试包。 名称与文件模式“ * _test.go”匹配的文件可以包含测试函数,基准函数和示例函数。 不要使用保留名称。例如,将与贯穿始终。

  • 问题内容: 我以前从未见过这种情况,很奇怪。 我有一个针对的本地SQL Server 2012 Express数据库。使用TestDrive插件运行简单的测试套件,并使用EF v5访问数据库。 我只是运行了一个将记录插入数据库的测试。我的表中有9行,其ID为1-9。下一个插入和ID恰好跳了10000 !!!! Id列为: 我知道插入失败也会增加ID,但我可以保证在测试运行之间的5秒内没有10,00

  • 因此,在去年与react合作之后,我设法理解了它的功能和注意事项,以及如何避免不必要的渲染。 昨天我在玩一些代码,遇到了一个以前没有看到的问题,有点困惑。 在上面的代码中,我添加了一个简单的计数器,每次单击都会设置一个新的状态,这会导致重新渲染,在屏幕上显示“Count:1”,并在dev工具中显示一个“counter render”日志,就像我预期的那样。 奇怪的部分来自渲染变量,我用数字0启动(

  • 我在Chrome Developer Tools中出现这个错误已经有一段时间了,我似乎就是找不到不安全的http://请求。它指向我的域,但没有https://。http://www.example.com/不是一个脚本,所以我不明白它是从哪里来的。 内容混杂:“HTTPS://www.example.com/categoy/a-product.html”页面是通过HTTPS加载的,但请求的脚本“

  • 我有一个相当基本的登录设置(代码如下),其中一些组件需要身份验证。当我导航到http://localhost:8000/时,它会重定向到http://localhost:8000/login,一切正常。如果我随后登录,它将返回到http://localhost:8000/并显示我的主要组件。 但是,当我直接导航到http://localhost:8000/login时,它显示“不能GET/logi