[Tapestry5] Tapestry5自定义登陆组件时,登陆错误时的提示怎么显示在返回的登陆页面上

bianweiall 2012-09-09
想把登陆模块做成一个组件,做登陆页面时使用这个组件就可以了,当我点击登陆按钮后返回到登陆页面并且会有“用户名或密码错误!”的提醒,现在这个message传不过去值,不知道哪里错了!

组件类Login.java
package com.bw.components;

import javax.persistence.Query;

import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.corelib.components.Errors;
import org.apache.tapestry5.corelib.components.Form;
import org.apache.tapestry5.corelib.components.TextField;
import org.apache.tapestry5.ioc.annotations.Inject;

import com.bw.entities.TUser;
import com.bw.pages.Index;
import com.bw.services.dao.jpa.AppJpaDAO;

public class Login {

	@Property
	private TUser user;

	@Property
	private String message;

	@SuppressWarnings("unused")
	@SessionState
	private String userNameSSO;

	@Inject
	private AppJpaDAO dao;

	@SuppressWarnings("unused")
	@Component
	private Form form;

	@SuppressWarnings("unused")
	@Component
	private Errors errors;

	@SuppressWarnings("unused")
	@Component(parameters = { "value=user.name", "validate=required" })
	private TextField userName;

	@SuppressWarnings("unused")
	@Component(parameters = { "value=user.password", "validate=required" })
	private TextField userPassword;

	void onPrepare() {
		user = new TUser();
	}

	String onPassivate() {
		return message;
	}

	void onActivate(String message) {
		this.message = message;
	}

	Object onSuccess() {

		String inName = user.getName();
		String inPassword = user.getPassword();

		String jpql = "select o from _user o where o.name=:param";
		Query query = dao.findQuery(jpql);
		query.setParameter("param", inName);

		int rSize = query.getResultList().size();

		if (rSize != 0) {
			user = (TUser) query.getResultList().get(0);
			if (rSize == 1 && user.getPassword().equals(inPassword)) {
				userNameSSO = user.getName();
				return Index.class;
			} else {
				message = "用户名或秘密错误1!";
				System.out.println(message);
				return com.bw.pages.user.Login.class;
			}
		} else {
			message = "用户名或秘密错误2!";
			System.out.println(message);
			return com.bw.pages.user.Login.class;
		}
	}
}



组件模版:Login.tml
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
	xmlns:p="tapestry:parameter">
	<p>${message}</p>
	<form t:id="form">
		<p t:id="errors" />

		<p>
			用户名:
			<input type="text" t:id="userName" />
		</p>

		<p>
			密码:
			<input type="password" t:id="userPassword" />
		</p>

		<p>
			<input type="submit" value="登陆" />
		</p>
	</form>
</html>


所用的页面类:Login.java
package com.bw.pages.user;

public class Login {

}



页面模版:Login.tml
<html t:type="layout" title="登陆"
	xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
	<t:login />
</html>
Global site tag (gtag.js) - Google Analytics