GVKun编程网logo

第十四讲:tapestry form验证(tape test)

30

对于想了解第十四讲:tapestryform验证的读者,本文将提供新的信息,我们将详细介绍tapetest,并且为您提供关于第七讲:tapestry可预览的模板页、第三十一讲:tapestry表单组件

对于想了解第十四讲:tapestry form验证的读者,本文将提供新的信息,我们将详细介绍tape test,并且为您提供关于第七讲:tapestry可预览的模板页、第三十一讲:tapestry表单组件详解之FormFragment、第三十七讲:tapestry Ajax 表单 (form) 多 zone 组件、第三十七讲:tapestry Ajax 表单(form)多zone组件的有价值信息。

本文目录一览:

第十四讲:tapestry form验证(tape test)

第十四讲:tapestry form验证(tape test)

tapestry提供了表单验证,大大简化了我们手工编写验证代码的麻烦。常用验证有:required(必须的)、email(邮箱验证)、maxLength(最大字符数)、minLength(最小字符数)、max(最大值)、min(最小值)、regexp(正则表达式)。奇怪的是5.3.1验证有bug,5.3.2已经修复了....源码如下:

Validators1.java

/**
* 项目名称:TapestryStart
* 开发模式:Maven+Tapestry5.x+Tapestry-hibernate+Mysql
* 网址: http://www.flywind.org
* 版本:1.0
* 编写:飞风
* 时间:2012-02-29
*/
package com.tapestry.app.pages;
 
import org.apache.tapestry5.annotations.InjectPage;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.beaneditor.Validate;
 
public class Validators1 {
 
@Property
@Validate("required")
private String firstName;
 
@Property
@Validate("required")
private String lastName;
 
@InjectPage
private Validators2 validators2;
 
Object onSuccess(){
validators2.set(firstName, lastName);
return validators2;
}
}
 

Validators1.tml

<html t:type="layout" title="tapestryStart Index"  t:sidebarTitle="Framework Version"
 xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
<t:form>
<t:errors/>
姓:<input t:type="textField" t:id="firstName" value="firstName"/><br/>
名字:<input t:type="textField" t:id="lastName" value="lastName"/><br/>
<input type="submit" value="提交"/>
</t:form>
</html>

Validators2.java

/**
* 项目名称:TapestryStart
* 开发模式:Maven+Tapestry5.x+Tapestry-hibernate+Mysql
* 网址: http://www.flywind.org
* 版本:1.0
* 编写:飞风
* 时间:2012-02-29
*/
package com.tapestry.app.pages;
 
public class Validators2 {
 
private String firstName;
 
private String lastName;
 
public void set(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
 
public String getName(){
return firstName + " " + lastName;
}
 
String[] onPassivate(){
return new String[]{firstName, lastName};
}
 
void onActivate(String firstName, String lastName){
this.firstName = firstName;
this.lastName = lastName;
}
 
 
}
 

Validators2.tml

<html t:type="layout" title="tapestryStart Index"  t:sidebarTitle="Framework Version"
 xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
姓名:${name}<br/>
<t:pagelink page="Validators1">返回</t:pagelink>
</html>

http://localhost/Validator/Validators1

第七讲:tapestry可预览的模板页

第七讲:tapestry可预览的模板页

tapestry模板页是*.tml文件,为了给美工美化静态页面带来更大方便,tapestry的所有组件都可以t:type写成类似htm可预览的代码l。例如:

<t:pagelink t:page="Index">index</pagelink>

可写成

<a href="#;" t:type="pagelink" t:page="Index">index</a>

其他的以此类推。

第九讲:tapestry pagelink组件

tapestry页面间的跳转使用了pagelink组件,等同于html的<a>节点。使用方法非常简单

第三十一讲:tapestry表单组件详解之FormFragment

第三十一讲:tapestry表单组件详解之FormFragment

http://flywind.org/newtechnologydetail/166

第三十七讲:tapestry Ajax 表单 (form) 多 zone 组件

第三十七讲:tapestry Ajax 表单 (form) 多 zone 组件

/**
 * 
 */
package corner.app.pages.ajax;

import java.util.Date;

import org.apache.tapestry5.annotations.Component;
import org.apache.tapestry5.annotations.InjectComponent;
import org.apache.tapestry5.annotations.Property;
import org.apache.tapestry5.corelib.components.DateField;
import org.apache.tapestry5.corelib.components.Form;
import org.apache.tapestry5.corelib.components.TextField;
import org.apache.tapestry5.corelib.components.Zone;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.services.Request;
import org.apache.tapestry5.services.ajax.AjaxResponseRenderer;

/**
 * @author <a href="mailto:xf@bjmaxinfo.com">xiafei</a>
 * 
 */
public class AJAXFormMultipleZoneUpdate {

	// Screen fields

	@Property
	private String firstName;

	@Property
	private String lastName;

	@Property
	private Date birthday;

	// Generally useful bits and pieces

	@Component
	private Form ajaxForm;

	@Component(id = "firstName")
	private TextField firstNameField;

	@Component(id = "lastName")
	private TextField lastNameField;

	@Component(id = "birthday")
	private DateField birthdayField;

	@InjectComponent
	private Zone formZone;

	@InjectComponent
	private Zone outZone;

	@Inject
	private Request request;

	@Inject
	private AjaxResponseRenderer ajaxResponseRenderer;

	// The code

	void setupRender() {
		if (firstName == null && lastName == null && birthday == null) {
			firstName = "Humpty";
			lastName = "Dumpty";
			birthday = new Date(0);
		}
	}

	void onValidateFromAjaxForm() {

		if (firstName == null || firstName.trim().equals("")) {
			ajaxForm.recordError(firstNameField, "First Name is required.");
		}
		if (lastName == null || lastName.trim().equals("")) {
			ajaxForm.recordError(lastNameField, "Last Name is required.");
		}
		if (birthday == null) {
			ajaxForm.recordError(birthdayField, "Birthday is required.");
		} else {
			Date now = new Date();
			if (birthday.after(now)) {
				ajaxForm.recordError(birthdayField,
						"Birthday must be in the past.");
			}
		}
	}

	void onSuccess() {
		if (request.isXHR()) {
			ajaxResponseRenderer.addRender(formZone).addRender(outZone);
		}
	}

	void onFailure() {
		if (request.isXHR()) {
			ajaxResponseRenderer.addRender(formZone);
		}
	}

	public String getName() {
		return firstName + " " + lastName;
	}

	public Date getTime() {
		return new Date();
	}
}

<html t:type="layout" title="tapestryStart Index"  t:sidebarTitle="Framework Version" 
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd" xmlns:p="tapestry:parameter">
<h1>AJAX Form Multiple Zone Update</h1>

	<noscript>
		<span style="color: red;">
			${message:javascript_required}<br/><br/>
		</span> 
	</noscript> 	

	This page demonstrates an AJAX-enabled Form that also updates another zone on success.<br/><br/>
	
	<t:zone t:id="formZone" id="formZone">
		<form t:id="ajaxForm" t:type="form" t:zone="formZone" style="border: 2px solid #eee; padding: 15px">
		
			First Name: <input t:type="TextField" t:id="firstName"/><br/>
			Last Name: <input t:type="TextField" t:id="lastName"/><br/>
			Birthday: <input t:type="datefield" t:id="birthday"/><br/><br/>
			
			<input type="submit" value="Accept"/><br/><br/>
			
			<t:errors/>
			
	 	</form>
 	</t:zone>
 	
 	<t:zone t:id="outZone" id="outZone" style="border: 2px solid #eee; padding: 15px">
		Welcome ${name}. Your birthday is ${birthday}
	</t:zone>
</html>

 

第三十七讲:tapestry Ajax 表单(form)多zone组件

第三十七讲:tapestry Ajax 表单(form)多zone组件

总结

以上是小编为你收集整理的第三十七讲:tapestry Ajax 表单(form)多zone组件全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

关于第十四讲:tapestry form验证tape test的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于第七讲:tapestry可预览的模板页、第三十一讲:tapestry表单组件详解之FormFragment、第三十七讲:tapestry Ajax 表单 (form) 多 zone 组件、第三十七讲:tapestry Ajax 表单(form)多zone组件的相关信息,请在本站寻找。

本文标签: