ZK 的 onClick$loginButton 抛出 NullPointerException
ZK's onClick$loginButton throws NullPointerException
我正在尝试捕获用户输入的登录信息。但是按钮的点击处理程序抛出 NullPointerException
。不确定我在这里做错了什么。
login.zul
<?page title="Login Test" contentType="text/html;charset=UTF-8"?>
<zk>
<style>
body{ background:url('images/login-pg-bg.png')no-repeat center
center fixed; }
</style>
<window id="window" border="normal" width="320px"
apply="foo.FooComposer" position="center"
mode="overlapped" focus="true">
<!-- Content Division element to display custom messages-->
<div height="30px" align="center">
<label
style="color:#FF0000;font-weight:bold;font-family:Verdana;font-size: 14px;"
id="msg">
</label>
</div>
<!-- USERNAME -->
<label value="User Name"
style="color:#606060;font-weight:bold;font-family:Verdana; font-size: 14px;">
</label>
<textbox id="username" value="" constraint="no empty" />
<!-- PASSWORD -->
<label value="Password"
style="color:#606060;font-weight:bold;font-family:Verdana; font-size: 14px;">
</label>
<textbox id="password" value="" type="password"
constraint="no empty" />
<separator bar="false" />
<separator bar="false" />
<!-- LOGIN BUTTON -->
<box orient="horizontal">
<button id="register" label="Register"
style="color:#3333FF;font-weight:bold;font-family:Verdana; font-size: 14px;">
</button>
<button id="loginButton" label="Login"
style="color:#3333FF;font-weight:bold;font-family:Verdana; font-size: 14px;">
</button>
</box>
<separator bar="false" />
<separator bar="true" />
<!-- COPYRIGHT INFO -->
<div align="center">
<!--
<label
style="color:#3333FF;font-weight:bold;font-family:Verdana; font-size: 14px;"
id="copyright" value="Copyright © 2020 COPYRIGHT TEXT" />
-->
</div>
</window>
</zk>
FooComposer:
package foo;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
public class FooComposer extends GenericForwardComposer<Component> {
private static final long serialVersionUID = 1218526917089196484L;
/** 1. The login window. */
private Window window;
/** 2. The login button. */
@SuppressWarnings("unused")
private static Button loginButton;
/** 3. The custom message to display */
public static Label msg;
/** 4. The username. */
private static Textbox username;
/** 5. The password. */
private static Textbox password;
/**
* CODE TO EXECUTE WHEN THE LOGIN WINDOW IS CREATED
*/
public void onCreate$window() {
System.out.println("INSIDE FOOCOMPOSER'S ONCREATE..");
window.doOverlapped();
window.setPosition("center");
window.setSizable(true);
}
/**
* CODE TO EXECUTE WHEN THE LOGIN/SIGN-IN BUTTON IS CLICKED
*
* @throws Exception the exception
*/
public void onClick$loginButton() throws Exception {
System.out.println("SIGN IN BUTTON CLICKED!");
System.out.println("==>" + username.getText()); // throws java.lang.NullPointerException
//System.out.println("==>" + password.getText());
//System.out.println(System.getProperty(username.getValue()));
}
}
当我在 username
和 password
字段中输入内容并单击 Login
按钮时,我得到 NullPointerException
。
抛出异常的行:
System.out.println(username.getText());
编辑:
使您在 FooComposer 中的成员变量成为非静态的。请勾选 this fiddle.
我正在尝试捕获用户输入的登录信息。但是按钮的点击处理程序抛出 NullPointerException
。不确定我在这里做错了什么。
login.zul
<?page title="Login Test" contentType="text/html;charset=UTF-8"?>
<zk>
<style>
body{ background:url('images/login-pg-bg.png')no-repeat center
center fixed; }
</style>
<window id="window" border="normal" width="320px"
apply="foo.FooComposer" position="center"
mode="overlapped" focus="true">
<!-- Content Division element to display custom messages-->
<div height="30px" align="center">
<label
style="color:#FF0000;font-weight:bold;font-family:Verdana;font-size: 14px;"
id="msg">
</label>
</div>
<!-- USERNAME -->
<label value="User Name"
style="color:#606060;font-weight:bold;font-family:Verdana; font-size: 14px;">
</label>
<textbox id="username" value="" constraint="no empty" />
<!-- PASSWORD -->
<label value="Password"
style="color:#606060;font-weight:bold;font-family:Verdana; font-size: 14px;">
</label>
<textbox id="password" value="" type="password"
constraint="no empty" />
<separator bar="false" />
<separator bar="false" />
<!-- LOGIN BUTTON -->
<box orient="horizontal">
<button id="register" label="Register"
style="color:#3333FF;font-weight:bold;font-family:Verdana; font-size: 14px;">
</button>
<button id="loginButton" label="Login"
style="color:#3333FF;font-weight:bold;font-family:Verdana; font-size: 14px;">
</button>
</box>
<separator bar="false" />
<separator bar="true" />
<!-- COPYRIGHT INFO -->
<div align="center">
<!--
<label
style="color:#3333FF;font-weight:bold;font-family:Verdana; font-size: 14px;"
id="copyright" value="Copyright © 2020 COPYRIGHT TEXT" />
-->
</div>
</window>
</zk>
FooComposer:
package foo;
import org.zkoss.zk.ui.Component;
import org.zkoss.zk.ui.util.GenericForwardComposer;
import org.zkoss.zul.Button;
import org.zkoss.zul.Label;
import org.zkoss.zul.Textbox;
import org.zkoss.zul.Window;
public class FooComposer extends GenericForwardComposer<Component> {
private static final long serialVersionUID = 1218526917089196484L;
/** 1. The login window. */
private Window window;
/** 2. The login button. */
@SuppressWarnings("unused")
private static Button loginButton;
/** 3. The custom message to display */
public static Label msg;
/** 4. The username. */
private static Textbox username;
/** 5. The password. */
private static Textbox password;
/**
* CODE TO EXECUTE WHEN THE LOGIN WINDOW IS CREATED
*/
public void onCreate$window() {
System.out.println("INSIDE FOOCOMPOSER'S ONCREATE..");
window.doOverlapped();
window.setPosition("center");
window.setSizable(true);
}
/**
* CODE TO EXECUTE WHEN THE LOGIN/SIGN-IN BUTTON IS CLICKED
*
* @throws Exception the exception
*/
public void onClick$loginButton() throws Exception {
System.out.println("SIGN IN BUTTON CLICKED!");
System.out.println("==>" + username.getText()); // throws java.lang.NullPointerException
//System.out.println("==>" + password.getText());
//System.out.println(System.getProperty(username.getValue()));
}
}
当我在 username
和 password
字段中输入内容并单击 Login
按钮时,我得到 NullPointerException
。
抛出异常的行:
System.out.println(username.getText());
编辑:
使您在 FooComposer 中的成员变量成为非静态的。请勾选 this fiddle.