jsf

这是一个jsf框架+hibernate 的一个案例,介绍我对jsf的理解。

jsf框架是一个目标很明确的框架,具有自我的页面标签,他与后台bean紧密结合使用bean的变量和方法来操作页面,在加载页面时会加载页面所指定的bean以及变量和方法,将其创建出来,所以一般在list页面和view页面时的传值都和bean紧密结合,

JSF请求过程中不需要通过request等变量获取值,它将浏览器端的页面变量与服务端的java对象对应起来了,依靠事件驱动完成请求。程序员使用JSF再也不用关心如何在给后台传值如何在界面取值了。直接在界面中使用由数据的ManagedBean就行了。

例如:

package com.biz.xm;


import java.util.ArrayList;
import java.util.List;
import java.util.Vector;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.faces.model.DataModel;
import javax.servlet.http.HttpServletRequest;

import common.entities.environmentmanage.TeamOil;
import common.entities.xinshengchandongtai.Shigong;
import common.entities.xm.USERSS;
import common.hb3utils.HbQF;
import common.utils.GuidGenerator;
import common.web.jsf.DataPage;
import common.web.jsf.ManyCheckBoxUtil;
import common.web.jsf.PagedListDataModel;


/**
 * 这是一个userbean
 * @author Administrator
 *
 */
public class UserBean {
	private String username;
	private String password;
	
	public UserBean() {

//因为jsf是加载页面先加载bean的所以在点击修改时传递参数我们可以正在构造里面接受被操作 

		HttpServletRequest req = (HttpServletRequest) FacesContext
				.getCurrentInstance().getExternalContext().getRequest();
		String id =req.getParameter("editId");
		System.out.println(id);
		//编辑页面时ID有值
		if(id!=null&& !id.equals("")){
			userDemo=(USERSS) HbQF.getInstance().getObjectById(USERSS.class, id);
		}
	}
	
	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	
	@Override
	public String toString() {
		return "UserBean [username=" + username + ", password=" + password + ", userDemo=" + userDemo + "]";
	}


	/**
	 *注入实体类
	 */
	
	private  USERSS userDemo=new USERSS();
	
	
	
	
	public USERSS getUserDemo() {
		return userDemo;
	}

	public void setUserDemo(USERSS userDemo) {
		this.userDemo = userDemo;
	}

	
	
	
	/**
	 *物理 删除数据
	 */
	public  void  getDel(ActionEvent a) {
		//获取id
		List<String> ids = ManyCheckBoxUtil.tableManyCheckBox("items");
		for (String id : ids) {
			System.out.println(id);
			HbQF.getInstance().deleteObject(USERSS.class, id);
			
		}
		reset();
		
		
	}
	
	

	public  void save1(ActionEvent a) {
		//保存存数据
		HbQF.getInstance().save(userDemo);
		this.reset();
		
	}
	
	
	
	/**
	 * 保存数据
	 * @param userDemo
	 * 
	 */
	
	
	
	public  void save(ActionEvent a) {
		String id=GuidGenerator.getRandNum();
		
		userDemo.setPassword(password);
		userDemo.setId(id);
		userDemo.setUsername(username);
		System.out.println(userDemo.getPassword()+userDemo.getUsername());
		//保存存数据
		HbQF.getInstance().save(userDemo);
		this.reset();
		
	}
	
	public void reset() {
		userDemo = null;		
	}
	
	
	
	/**
	 * 查询所有user数据  不带分页
	 * @return
	 * ActionEvent e
	 */
	public List<USERSS> getFindAll(){
		String sql="from USERSS ";
		List<USERSS> list= HbQF.getInstance().getListByQuery(sql);
		System.out.println(list.get(0).getId());
		return list;
	}
	
	
	/**
	 * 删除数据
	 * delete from USERSS where id=#{id}
	 */
	
	public void getObjectById(){
		//获取id值
		HttpServletRequest req = (HttpServletRequest) FacesContext
				.getCurrentInstance().getExternalContext().getRequest();
		String id =req.getParameter("editId");
		System.out.println(id);
		//编辑页面时ID有值
		if(id!=null&& !id.equals("")){
			USERSS us=(USERSS) HbQF.getInstance().getObjectById(USERSS.class, id);
			System.out.println(us);
		}
		
		
	}
	
	public DataModel getPageData() {
		return new LocalDataModel(20);
	}
	
	/**
	 * 自定义的DataModel对象。
	 */
	@SuppressWarnings({ "unchecked" })
	private class LocalDataModel extends PagedListDataModel {
		public LocalDataModel(int pageSize) {
			super(pageSize);
		}
		/** 
		 *查询CrossWork
		 *模糊  带分页的查询所有 
		 */
		@Override
		public DataPage fetchPage(int startRow, int pageSize) {
			List<USERSS> list = new ArrayList<USERSS>();
			Vector v = new Vector();			
			StringBuffer hql = new StringBuffer(
			" from USERSS obj where 1=1  ");	
			if(username!=null && !"".equals(username)){
				hql.append(" and obj.username like ?");
				v.add("%"+username+"%");
			}
			/*if(countrySel!=null && !"".equals(countrySel)){
				hql.append(" and obj.countryId.jingchangName like ?");
				v.add("%"+countrySel+"%");
			}
			if(state!=null && !"".equals(state)){
				hql.append(" and obj.state = ?");
				v.add(state);
			}*/
			
			hql.append(" order by obj.username desc");
			Long c = (Long) HbQF.getInstance().getObjectByQuery(
					"select count(obj) " + hql, v);
			list = HbQF.getInstance().getListByQuery(hql.toString(), startRow, pageSize,v);
			return new DataPage(c.intValue(), startRow, list);
		}			
	}
	
	
}

那么我们就可以在页面上进行展示了,

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<%@ taglib uri="https://ajax4jsf.dev.java.net/ajax" prefix="a4j"%>
<%
String ctxPath=request.getContextPath();
%>
<!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=UTF-8" />
<title>无标题文档</title>
<link rel="stylesheet" href="<%=ctxPath%>/css/css.css" type="text/css" />

<script language="JavaScript" src="<%=ctxPath%>/js/tableselect.js"></script>
<script language="JavaScript" src="<%=ctxPath%>/js/jquery-1.4.2.min.js"></script>
<script language="JavaScript" src="<%=ctxPath%>/js/func.js"></script>
<script language="JavaScript" src="<%=ctxPath%>/js/My97DatePicker/WdatePicker.js"></script>
<script language="JavaScript" src="<%=ctxPath%>/js/buttonControl.js"></script>
</head>

<body onload="processButtons('<%=common.security.user.SysUser.getUser(request).getButtonIdsStr() %>')">
<script language="JavaScript">
/* 用户添加  */
function myAdd(){
	document.location.href="create.jsf";
}

</script>
<f:view>
<h:form id="myform">
<!-- 内容页上部分 -->
<div id="container">
<div id="main_top">
	<div id="main_top_left"></div>
	<div id="main_top_center">
		<table width="100%">
			<tr>
				<td width="50%">
				    <div id="center_top_left">
				        <div class="center_top_left1"><img src="<%=ctxPath%>/images/tb.gif" /></div>
					    <div class="center_top_left2">
				            <font>当前位置&nbsp;:&nbsp;生产管理</font>
				            <font>&nbsp;>>&nbsp;&nbsp;</font>
				            <font>基础数据</font>
				            <font>&nbsp;>>&nbsp;&nbsp;</font>
				            <font>压裂工艺</font>
			            </div>
	                </div>
				</td>
				<td width="45%" align="right">
				    <div id="checkstyle">
					<div class="button1"><input type="checkbox" id="checkbox62" value="checkbox" align="middle" onclick="checkAll('checkbox62','items')"/><font color="#6B7888" style="font-family: cursive;" size="2px">&nbsp;全选&nbsp;&nbsp;</font></div>
					<div class="button2" ><img src="<%=ctxPath %>/images/button_add.gif" title="用户添加"  onclick="myAdd();" /></div>
					<div class="button3" id="btn_id_m07080402"><img src="<%=ctxPath %>/images/button_update.gif" title="修改信息" onclick="myEdit('items','edit.jsf')" /></div>									
						<h:commandButton id="tjButton11" image="/images/button_delete.jpg" type="submit" actionListener="#{userBean.getDel}"  ></h:commandButton>
					</div>
				</td>
				
			</tr>
		</table>								
	</div>
	<div id="main_top_right"></div>	
</div>
<!-- 内容页中间部分 -->
<div id="main_middle">
	<table width="100%" border="0" cellspacing="0" cellpadding="0">
	  <tr style="height:4px;"><td></td></tr>
	  <tr>
        <td width="8">&nbsp;</td>
        <td style="border: 1px solid #CECECE;">
			<div style="float: left;width: 90%;margin-left: 10px;">	
			    <t:panelGrid columns="2" styleClass="inputTable1" >	
				    <t:outputText value="用户查询"></t:outputText>	
				    		
				</t:panelGrid>	
			</div>
			<div style="float:left;margin-top: 2px;">
			   <h:commandButton value="查询" id="l9Button"styleClass="btn">
					 <a4j:support event="onclick" rendered="myform:data"></a4j:support>
				</h:commandButton>
		    </div>
        </td>
        <td width="8">&nbsp;</td>
      </tr>	 
      <tr>
        <td width=8">&nbsp;</td>
        <td>
		<!-- 界面内容,表格或表单开始 -->
		<t:dataTable renderedIfEmpty="true" id="data" var="obj" width="100%" 
			preserveDataModel="true" preserveRowStates="true" value="#{userBean.findAll}" styleClass="gridtable" 
			onmouseover="changeto()"  onmouseout="changeback()" rowClasses="row1,row2">	
			<t:column >
				<f:facet name="header">
				</f:facet>
				<h:panelGroup>
					<f:verbatim>
						<input id="items" type="checkbox" name="items" value="</f:verbatim><h:outputText value="#{obj.id}" ></h:outputText><f:verbatim>" />
					</f:verbatim>
				</h:panelGroup>
			</t:column>
			<t:column>
				<f:facet name="header">
					<h:outputText value="密码" />
				</f:facet>
				<h:outputText value="#{obj.password}"/>
			</t:column>	
					
			<t:column>
				<f:facet name="header">
					<h:outputText value="用户名" />
				</f:facet>
				<h:outputText value="#{obj.username}"/>
			</t:column>	
							
		</t:dataTable>		
          <!-- 界面内容,表格或表单结束 -->
		</td>  
		     
        <td width="8">&nbsp;</td>       
      </tr>      
    </table>
    </div>
    </div>
</h:form>
</f:view>
</body>
</html>

 

JSF获得表单提交值的方法

第一种:

1.如在你的页面中有 <input   type= "hidden "   name= "classid "   value= "1 "> 
注意要写在form中,并且要用name而不是id. 
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "classid ")可以得到。   

2. 
<h:form   id= "f "> 
<input   type= "hidden "   id= "classid "   value= "1 "> 
</h:form> 
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get( "f:classid ")可以

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值