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

为什么commandButton actionListener不工作?

蒋正平
2023-03-14

我在登录中有以下代码。xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
     xmlns:p="http://primefaces.org/ui">

<h:head><title>Login</title></h:head>
<h:body>
    <h:form>
        <p:commandButton id="loginBtn"  value="Login" type="submit" actionListener="#{userMB.login}"/>
    </h:form>
</h:body>
</html>

我有我有以下豆子:

@ManagedBean(name="userMB")
@RequestScoped
public class UsersManagedBean implements Serializable {
    public void login(ActionEvent event) {
        System.out.println("print here...");
    }
}

我没有打印消息,因为没有调用login()方法。有什么问题吗?

web.xml文件是:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   id="WebApp_ID"
   version="2.5">    
<context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
</context-param>
 <servlet>
     <servlet-name>Faces Servlet</servlet-name>
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
     <load-on-startup>1</load-on-startup>
   </servlet>
 <servlet-mapping>
     <servlet-name>Faces Servlet</servlet-name>
     <url-pattern> *.xhtml</url-pattern>
   </servlet-mapping>
</web-app>

共有3个答案

公孙智
2023-03-14
匿名用户

删除类型="提交"后尝试此操作

<html xmlns="http://www.w3.org/1999/xhtml"
 xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
     xmlns:p="http://primefaces.org/ui">

<h:head><title>Login</title></h:head>
<h:body>
    <h:form>
        <p:commandButton id="loginBtn" value="Login" action="#{userMB.login}"/>
    </h:form>
</h:body>
</html>

你的ManagedBean应该是这样的。

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.event.ActionEvent;

@ManagedBean(name = "userMB")
@RequestScoped
public class UsersManagedBean implements Serializable {

    public void login() {
        System.out.println("print here...");
    }
}

黄弘盛
2023-03-14

确保使用javax。面孔。事件行动事件。

xhtml

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui">

    <h:head><title>Login</title></h:head>
    <h:body>
        <h:form>
            <p:commandButton id="loginBtn" 
                             value="Login" 
                             type="submit" 
                             actionListener="#{userMB.login}"/>
        </h:form>
    </h:body>
</html>

managedbean

import java.io.Serializable;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.event.ActionEvent;

@ManagedBean(name = "userMB")
@RequestScoped
public class UsersManagedBean implements Serializable {

    public void login(ActionEvent event) {
        System.out.println("print here...");
    }
}
白坚壁
2023-03-14

我已经复制了您的完整登录示例。将xhtml页面添加到我的测试项目中,效果很好。我自己创建的托管bean。

你有没有试着避开黄昏脸?使用标准JSF实现,然后重试:

<h:commandButton id="loginBtn"  value="Login" type="submit" actionListener="#{userMB.login}"/>

注意

顺便说一句:type=“sumbit”是PrimeFaces中的默认值,省略或使用该属性的值submit(PrimeFaces用户指南5.1,第108页)不会有任何区别。

 类似资料:
  • 当我调用下面的代码时,我总是得到 用户的值。Id和密码有效。结果错误总是说“无效令牌”,我没有尽可能地看到它,因为我得到它并立即检查它和它的错误。这只是一个理智测试——我通常通过电子邮件向用户发送令牌,但这也不起作用。 UPDATE 1我在同一个控制器中定义UserManager,如下所示: UPDATE 2这是我的Application ationUserManager代码:

  • 我只是按照spring的指示将响应发送回特定用户,而不是广播消息。但最终,无法发送回响应消息。 这是我的js代码: 这是控制器: 这是Spring配置: 请帮忙。谢谢提前。 我已经尝试使用@SendToUser,@SendToUser(/队列/resp)和SimpMessagingTem板以及,完全不能响应消息到浏览器。

  • 使用scandir()函数时,我收到以下php警告: Scandir无法打开目录:公共html/page2中不允许操作。php在线3 第2页。php 我想使用这个功能来打印我的根文件夹的文件和子目录,但它不工作。 有人知道怎么修吗?

  • 有人能找出为什么我的不能工作。也许我错过了什么。我意识到这可能是愚蠢的没有任何更多的上下文比我所展示的,但请您询问,我将很乐意提供更多。 这是一段很大的代码,所以我不知道如何用它生成SSCE。您正在查看的是子类的构造函数,它包含3个面板。此时,只是一个。方法打开一个filechooser,然后加载选定的图像,该图像被绘制到上。图像显示良好,一切正常,除了我调整窗口大小时,没有滚动条。

  • 问题内容: 我想使用Vim来查看结果(不在shell中)。我认为可以使用(将的结果用作的输入),但返回结果为: 有人可以解释吗? 问题答案: 通过传递到 vim中 ,您正在更改标准输入流。由于 vim 是交互式程序,因此它需要标准输入作为控制台。 如果要在vim中查看,应该告诉它您正在从stdin中读取文件(通过提供参数): 另外,您可以使用 更多 或 更少 : 后两者是优选的。如果通过管道 传送

  • 我有模型类别。它可能有父类别和子类别列表。我写这个问题是因为找不到实体和自己相关的情况。 我试图这样实现它: 我保存实体,如: 我希望看到这样的情况: 但是在子模型中,我有递归循环。如何防止它? 是的,我也使用了@JsonIgnore。但是我不确定这是不是一个好的做法。但是如果我有一个案例,当我需要一个类别时,我真的需要将它发送给父母的UI。@JsonIgnore可以产生这个吗?

  • 我正在使用Java NIO,由于某种原因,我无法获得files.isHidden()来返回正确的布尔值。程序只是检查目录是否隐藏,如果隐藏,则使其可见,如果不隐藏,则使其隐藏。这就是我所拥有的: 它继续返回false并隐藏目录,尽管目录被隐藏。下面的代码使用旧的File类和Path类可以很好地工作。