【问题标题】:PrimeFaces remote command is not invokingPrimeFaces 远程命令未调用
【发布时间】:2015-02-05 07:30:30
【问题描述】:

我正在使用远程命令按钮来执行 bean 级别的方法。但是我的命令按钮不起作用。

我在下面附上我的代码:

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

<ui:composition template="/layouts/BasicTemplate.xhtml">
    <ui:define name="content">
        <div class="container">

        <script>

        function doAlert(s)
        {
            if(s=="true")
                {
                alert(s);
                rc();
                alert('hi i am');
                }
            else
                {
                 alert("Wrong Finger Print");
                }
        }

        </script>


          <h:form class="form-horizontal" id="myform" >
                <div class="row">

        <h:messages />
        <h:panelGrid columns="3" cellpadding="4" border="0" columnClasses="control-label">

            <h:outputText  value="Username :" />
            <h:inputText id="username" value="#{loginBean.login}" label="username" style="width: 200;" /> 
            <p:watermark for="username" value="Username" ></p:watermark>

            <h:outputLabel for="password" value="Password :" />
            <h:inputSecret id="password" value="#{loginBean.password}" label="password" style="width: 200;"/> 
            <p:watermark for="password" value="Password"></p:watermark>

            <p:spacer></p:spacer>
            <!-- <p:commandButton value="Login" action="#{loginBean.logMeIn}" widgetVar="mybutton" /> -->

            <p:commandButton id="loginButton" value="Login" action="#{loginBean.logMeIn}" widgetVar="mybutton"  disabled="#{!loginBean.enabled}"/>
            <p:remoteCommand name="rc" update="loginButton" actionListener="#{loginBean.enableButton}" /> 
            <p:spacer></p:spacer>
            <h:outputText value="#{loginBean.enabled}"></h:outputText>
            <applet id="fingureprintapplet" name="fingureprint" codebase="classes"  code="fingerprintntscanner.MyClassApplet.class" archive="#{facesContext.externalContext.requestContextPath}/FIngerprintntScanner.jar,#{facesContext.externalContext.requestContextPath}/lib/NBioBSPJNI.jar" width="300" height="400">

            </applet>
        </h:panelGrid>

        </div>
        </h:form>

        </div>
    </ui:define>
</ui:composition>

我的豆子是:

     @ManagedBean(name = "loginBean")
@SessionScoped
public class LoginBean implements Serializable {
    private static final long serialVersionUID = 1L;

    private String login;
    private String password;
    private boolean enabled;

    @ManagedProperty(value = "#{authenticationService}")
    private AuthenticationService authenticationService; // injected Spring defined service for bikes


    public String logMeIn() {

        boolean success = authenticationService.login(login, password);

        if (success){
            return "/faces/pages/home.xhtml?faces-redirect=true"; // return to application but being logged now 
        }
        else{
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage("Login or password incorrect."));           
            return "/faces/login.xhtml";
        }
    }

    public String logout(){
        System.out.println("chandan");
        authenticationService.logout();
        return "/faces/pages/home.xhtml?faces-redirect=true"; 
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }



    public void setAuthenticationService(AuthenticationService authenticationService) {
        this.authenticationService = authenticationService;
    }

    public void enableButton() {
        System.out.println("chandan");
        enabled = true;
    }

    public boolean isEnabled(){
        System.out.println("value is");
        return enabled;
    }

    public void setEnabled(boolean enabled) {
        System.out.println("value is sdgsdg");
        this.enabled = enabled;
    }

请检查为什么我的远程命令不起作用。

【问题讨论】:

  • 究竟是什么“不工作”?您甚至没有在代码中的任何地方调用doAlert。那么你期望发生什么?
  • 另外你的 bean 名称可能是错误的,方法名称/签名可能是错误的(所以请发布一个最小但完全有效的 bean),你可能有嵌套表单(来自模板)所以请创建一个简化的例子......
  • @user1983983 我正在调用 rc();在我的 doAlert 方法中,doAlertMethod 已被小程序调用
  • @Kukeltje 我正在更新我的问题。请检查更新
  • 所以hi i am 按预期收到警报,但value is 未记录且按钮未更新?

标签: jsf jsf-2 primefaces


【解决方案1】:

remoteCommand 上使用process="@this"partialSubmit="true"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-17
    • 2013-08-19
    • 1970-01-01
    • 2014-04-11
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多