0

ELを使用してボタンを有効/無効にすることは可能ですか? 送信ボタンを使用して、ログイン ボタンをトグル (有効/無効) したい。complex.process メソッドが呼び出されています。

また、名前、電話、電子メールを入力するとサーバーに投稿されることがわかりますが、進行状況バーには意味のある表示が実際には表示されません。

win 7でfirefox 19、jsf 2.2m09、tomcat 7.0.35を使用しています。

スニペット:

<form>
...
<input jsf:id="submit" type="submit" value="submit">
  <f:ajax execute="@this" render="status" event="click" listener="#{complex.process}" />
</input>            
<label jsf:id="status">#{complex.status}</label>
<button jsf:id="login" disabled="#{complex.status}">Login</button>
</form>

完全なコードは次のとおりで、正しいデータがレンダリングされていることを示していますが、ボタンは無効のままです。

フェイスレット:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
     xmlns:jsf="http://java.sun.com/jsf" 
     xmlns:f="http://java.sun.com/jsf/core">
    <head jsf:id="head">
        <title>Putting it all together </title>
        <!-- script jsf:target="body" jsf:name="js.js"/>
        <link jsf:name="css.css" rel="stylesheet" type="text/css" /-->
    </head>
    <body jsf:id="body">
        <form jsf:id="form" jsf:prependId="false">
            <label jsf:for="name">Name </label>
            <input jsf:id="name" type="text" jsf:value="#{complex.name}">
                <f:ajax execute="@this" render="progress"/>
            </input>
            <label jsf:for="tel">Tel </label>
            <input jsf:id="tel" type="tel" jsf:value="#{complex.tel}">
                <f:ajax execute="@this" render="progress"/>
            </input>

            <label jsf:for="email">Email </label>
            <input jsf:id="email" type="email" jsf:value="#{complex.email}">
                <f:ajax execute="@this" render="progress"/>
            </input>

            <label for="progress">Progress </label>
            <progress jsf:id="progress" max="3">#{complex.progress} of 3 </progress>

            <input jsf:id="submit" type="submit" value="submit">
                <f:ajax execute="@this" render="status" event="click" listener="#{complex.process}" />
            </input>

            <label jsf:id="status">#{complex.status}</label>
            <button jsf:id="login" disabled="#{complex.status}">Login</button>
        </form>
    </body>
</html>

マネージドBean:

package com.myco.bean;

import java.io.Serializable;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;

@ManagedBean
@SessionScoped
public class Complex implements Serializable {
    public Complex() {}

    private String name;
    private String tel;
    private String email;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getTel() {
        return tel;
    }
    public void setTel(String tel) {
        this.tel = tel;
    }
    public String getEmail() {
        return email;
    }
    public void setEmail(String email) {
        this.email = email;
    }
    private String status = "disabled";

    public void process(AjaxBehaviorEvent event) {
        System.out.println("listener process called");
        boolean s = false;
        status = (status == "disabled" ? "" : "disabled");
        if(status == "") s = false; else s = true; 
        //FacesContext.getCurrentInstance().getViewRoot().findComponent("form").findComponent("login").getAttributes().put("disabled", s);
    }


    public String isStatus() {
        return status;
    }

    public String getStatus() {
        System.out.println("getStatus:" + status);
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

    public String getProgress() {
        int progress = 0;
        if(name != null) {
            progress++;
        }
        if(tel != null) {
            progress++;
        }
        if(email != null) {
            progress++;
        }
        return progress + "";
    }


}

一部の tomcat ログ出力:

START PHASE RESTORE_VIEW 1
END PHASE RESTORE_VIEW 1
START PHASE APPLY_REQUEST_VALUES 2
END PHASE APPLY_REQUEST_VALUES 2
START PHASE PROCESS_VALIDATIONS 3
END PHASE PROCESS_VALIDATIONS 3
START PHASE UPDATE_MODEL_VALUES 4
END PHASE UPDATE_MODEL_VALUES 4
START PHASE INVOKE_APPLICATION 5
listener process called
END PHASE INVOKE_APPLICATION 5
START PHASE RENDER_RESPONSE 6
getStatus:disabled
END PHASE RENDER_RESPONSE 6
4

0 に答える 0