日期:2014-05-16  浏览次数:20421 次

jsf without tag,jsf + seam 的比较特殊的应用架构方式,很有趣的方法
不罗嗦,程序员喜欢看代码
<?xml version="1.0" encoding="UTF-8"?>
<pages xmlns="http://jboss.com/products/seam/pages"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.0.xsd"

       no-conversation-view-id="/main.xhtml"
                 login-view-id="/home.xhtml">

    <page view-id="/testJson.xhtml">
		<param name="user" value="#{myDate.user}"/>
    </page>
</pages>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>TEST</title>
	</head>
	<body>
		<script type="text/javascript">
			function GetXmlHttpObject(){
				var xmlHttp=null;
				try{
					// Firefox, Opera 8.0+, Safari
					xmlHttp=new XMLHttpRequest();
				}catch (e){
					// Internet Explorer
					try{
						xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
					}catch (e){
						xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
					}
				}
				return xmlHttp;
			}

			function testSubmit(){
				xmlHttp=GetXmlHttpObject()
				if (xmlHttp==null){
					alert ("您的浏览器不支持AJAX!");
					return;
				}
				var u=document.getElementById("user");
				var url="testJson.seam";
				url=url+"?user="+u.value;
				xmlHttp.onreadystatechange=stateChanged;
				xmlHttp.open("GET",url,true);
				xmlHttp.send(null);
			}

			function stateChanged() { 
				if (xmlHttp.readyState==4){ 
				  var req=xmlHttp.responseText;
				  document.getElementById("test").innerHTML=req;
				}
			}
		</script>

		<form action="testJson.seam">
			<input id="user" type="text" name="user"/>
			<input type="button" value="ajax" onClick="testSubmit()"/>
			<input type="submit" value="submit"/>
			<span id="test"></span>
		</form>

	</body>
</html>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
		<title>TEST</title>
	</head>
	<body>
		hello!#{myDate.user}
	</body>
</html>


package test;
import org.jboss.seam.annotations.*;
import org.jboss.seam.ScopeType;
@Name("myDate")
@Scope(ScopeType.CONVERSATION)
public class MyDate{
	String user;
	public String getUser(){
		return user;
	}
	public void setUser(String user){
		this.user=user;
	}
}


"we can reproduce the functionality of a traditional action-oriented framework like Struts or WebWork using page actions. "
"我们可以再生传统的面向动作的框架的功能,就像Struts或WebWork使用页面动作那样。"--满江红

这很有趣,它stateful,restful,ajaxful,auto param bind&valid 并且完全和html,js解耦
你可以容易的结合js,ajax框架
这里的程序没有使用页面动作,你喜欢也可以加上。
结合jboss的一堆可插拔组件,很好用,非常好用
胖子fins是个有勇气的人
如果可以的话,也可以自己修改seam和jsf源码,使它更适合这么做,不过,即使现在的jsf1.2和seam2.1这样做就很牛了。
jsf,wicket,Tapestry,GWT适合大公司开发,我们还是html好了
1 楼 theone 2008-11-02  
纯AJAX驱动页面逻辑? 稍微复杂一点的应用,怕是你JS会写的很辛苦。
2 楼 afadgaeg 2008-11-02  
theone 写道
纯AJAX驱动页面逻辑? 稍微复杂一点的应用,怕是你JS会写的很辛苦。

你可以用jquery嘛,我只是个示范