基本思路:<t:dataTable>内部放置<t:inputFileUpload>,根据设定的上传文件数,构造dataTable的List。
说明:以下代码包含了文件上传以外的相关代码,不做整理了。
实现目标:
<
html
>
< head >
< title > uploadfile </ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" >
< style type ="text/css" >
<!--
td { font-size : 9pt }
a { color : #000000 ; text-decoration : none }
a:hover { text-decoration : underline }
.tx { height : 16px ; width : 30px ; border-color : black black #000000 ; border-top-width : 0px ; border-right-width : 0px ; border-bottom-width : 1px ; border-left-width : 0px ; font-size : 9pt ; background-color : #eeeeee ; color : #0000FF }
.bt { font-size : 9pt ; border-top-width : 0px ; border-right-width : 0px ; border-bottom-width : 0px ; border-left-width : 0px ; height : 16px ; width : 80px ; background-color : #eeeeee ; cursor : hand }
.tx1 { height : 20px ; width : 30px ; font-size : 9pt ; border : 1px solid ; border-color : black black #000000 ; color : #0000FF }
-->
</ style >
< script language ="JavaScript" >
<!--
self.moveTo( 0 , 0 )
self.resizeTo(screen.availWidth,screen.availHeight)
// -->
</ script >
</ head >
< body bgcolor ="#FFFFFF" text ="#000000" background ="bj.gif" >
< form name ="form1" method ="post" action ="upfile.asp" enctype ="multipart/form-data" >
< input type ="hidden" name ="act" value ="upload" >
< table width ="76%" border ="1" cellspacing ="0" cellpadding ="5" align ="center" bordercolordark ="#CCCCCC" bordercolorlight ="#000000" height ="182" >
< tr bgcolor ="#CCCCCC" >
< td height ="22" align ="left" valign ="middle" bgcolor ="#CCCCCC" >
文件上传 </ td >
</ tr >
< tr align ="left" valign ="middle" bgcolor ="#eeeeee" >
< td bgcolor ="#eeeeee" height ="1" >
< script language ="javascript" >
function setid()
{
str = ' <br> ' ;
if ( ! window.form1.upcount.value)
window.form1.upcount.value = 1 ;
for (i = 1 ;i <= window.form1.upcount.value;i ++ )
str += ' 文件 ' + i + ' :<input type="file" name="file ' + i + ' " style="width:400" class="tx1"><br><br> ' ;
window.upid.innerHTML = str;
}
</ script >
< li > 需要上传的个数
< input type ="text" name ="upcount" class ="tx" value ="1" >
< input type ="button" name ="Button" class ="bt" onclick ="setid();" value ="· 设定 ·" >
</ li >
</ td >
</ tr >
< tr align ="center" valign ="middle" >
< td align ="left" id ="upid" height ="32" > 文件1:
< input type ="file" name ="file1" style ="width:403; height:20" class ="tx1" value ="" ></ td >
</ tr >
< tr align ="center" valign ="middle" bgcolor ="#eeeeee" >
< td bgcolor ="#eeeeee" height ="28" >
< input type ="submit" name ="Submit" value ="· 提交 ·" class ="bt" >
< input type ="reset" name ="Submit2" value ="· 重置 ·" class ="bt" ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
< head >
< title > uploadfile </ title >
< meta http-equiv ="Content-Type" content ="text/html; charset=gb2312" >
< style type ="text/css" >
<!--
td { font-size : 9pt }
a { color : #000000 ; text-decoration : none }
a:hover { text-decoration : underline }
.tx { height : 16px ; width : 30px ; border-color : black black #000000 ; border-top-width : 0px ; border-right-width : 0px ; border-bottom-width : 1px ; border-left-width : 0px ; font-size : 9pt ; background-color : #eeeeee ; color : #0000FF }
.bt { font-size : 9pt ; border-top-width : 0px ; border-right-width : 0px ; border-bottom-width : 0px ; border-left-width : 0px ; height : 16px ; width : 80px ; background-color : #eeeeee ; cursor : hand }
.tx1 { height : 20px ; width : 30px ; font-size : 9pt ; border : 1px solid ; border-color : black black #000000 ; color : #0000FF }
-->
</ style >
< script language ="JavaScript" >
<!--
self.moveTo( 0 , 0 )
self.resizeTo(screen.availWidth,screen.availHeight)
// -->
</ script >
</ head >
< body bgcolor ="#FFFFFF" text ="#000000" background ="bj.gif" >
< form name ="form1" method ="post" action ="upfile.asp" enctype ="multipart/form-data" >
< input type ="hidden" name ="act" value ="upload" >
< table width ="76%" border ="1" cellspacing ="0" cellpadding ="5" align ="center" bordercolordark ="#CCCCCC" bordercolorlight ="#000000" height ="182" >
< tr bgcolor ="#CCCCCC" >
< td height ="22" align ="left" valign ="middle" bgcolor ="#CCCCCC" >
文件上传 </ td >
</ tr >
< tr align ="left" valign ="middle" bgcolor ="#eeeeee" >
< td bgcolor ="#eeeeee" height ="1" >
< script language ="javascript" >
function setid()
{
str = ' <br> ' ;
if ( ! window.form1.upcount.value)
window.form1.upcount.value = 1 ;
for (i = 1 ;i <= window.form1.upcount.value;i ++ )
str += ' 文件 ' + i + ' :<input type="file" name="file ' + i + ' " style="width:400" class="tx1"><br><br> ' ;
window.upid.innerHTML = str;
}
</ script >
< li > 需要上传的个数
< input type ="text" name ="upcount" class ="tx" value ="1" >
< input type ="button" name ="Button" class ="bt" onclick ="setid();" value ="· 设定 ·" >
</ li >
</ td >
</ tr >
< tr align ="center" valign ="middle" >
< td align ="left" id ="upid" height ="32" > 文件1:
< input type ="file" name ="file1" style ="width:403; height:20" class ="tx1" value ="" ></ td >
</ tr >
< tr align ="center" valign ="middle" bgcolor ="#eeeeee" >
< td bgcolor ="#eeeeee" height ="28" >
< input type ="submit" name ="Submit" value ="· 提交 ·" class ="bt" >
< input type ="reset" name ="Submit2" value ="· 重置 ·" class ="bt" ></ td >
</ tr >
</ table >
</ form >
</ body >
</ html >
jsp:
<!
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
>
<% @page language="java" contentType="text/html; charset=gb2312" %>
<% @taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<% @taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<% @taglib prefix="t" uri="http://myfaces.apache.org/tomahawk" %>
< f:loadBundle basename ="batsys.resources.batsys" var ="batsys" />
< h:form >
< h:panelGrid width ="100%" columns ="5" border ="1"
styleClass ="scrollerTable2" >
< f:facet name ="header" >
< h:outputText value ="#{batsys['fttx.FT1001.wjsc']}" />
</ f:facet >
< h:outputText value ="#{batsys['fttx.FT1001.ywlx']}" />
< h:selectOneMenu value ="#{FT1001.bizType}" styleClass ="SELECT" >
< f:selectItems value ="#{FT1001.bizTypeItems}" />
</ h:selectOneMenu >
< h:outputText value ="#{batsys['fttx.FT1001.filecount']}" />
< h:panelGroup >
< h:inputText value ="#{FT1001.upcount}" id ="upcount" >
< f:validateLongRange maximum ="#{FT1001.maxUpCount}" />
</ h:inputText >
< h:message for ="upcount" styleClass ="error" />
</ h:panelGroup >
< h:commandButton value ="#{batsys['fttx.FT1001.setcount']}"
action ="FT1001_1" />
< h:outputText value ="#{batsys['fttx.FT1001.sh']}" />
< h:selectOneListbox value ="#{FT1001.branchNo}" size ="1" >
< f:selectItems value ="#{FT1001.branchItems}" />
</ h:selectOneListbox >
</ h:panelGrid >
</ h:form >
< h:form enctype ="multipart/form-data" >
< t:dataTable value ="#{FT1001.fileUploadList}" var ="fileUploadList"
width ="100%" border ="1" align ="center" columnClasses ="center,center" >
< h:column >
< h:outputText value ="#{fileUploadList.xh}" />
</ h:column >
< h:column >
< t:inputFileUpload value ="#{fileUploadList.uploadedFile}"
required ="true" id ="uploadedFile" />
< h:message for ="uploadedFile" styleClass ="error" />
</ h:column >
</ t:dataTable >
< h:panelGrid width ="100" columns ="1" cellspacing ="0" cellpadding ="5"
columnClasses ="right,left" align ="center" >
< h:commandButton value ="#{batsys['GL1001.uploadfile']}"
action ="#{FT1001.storeFile}" styleClass ="button" />
</ h:panelGrid >
</ h:form >
<% @page language="java" contentType="text/html; charset=gb2312" %>
<% @taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<% @taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<% @taglib prefix="t" uri="http://myfaces.apache.org/tomahawk" %>
< f:loadBundle basename ="batsys.resources.batsys" var ="batsys" />
< h:form >
< h:panelGrid width ="100%" columns ="5" border ="1"
styleClass ="scrollerTable2" >
< f:facet name ="header" >
< h:outputText value ="#{batsys['fttx.FT1001.wjsc']}" />
</ f:facet >
< h:outputText value ="#{batsys['fttx.FT1001.ywlx']}" />
< h:selectOneMenu value ="#{FT1001.bizType}" styleClass ="SELECT" >
< f:selectItems value ="#{FT1001.bizTypeItems}" />
</ h:selectOneMenu >
< h:outputText value ="#{batsys['fttx.FT1001.filecount']}" />
< h:panelGroup >
< h:inputText value ="#{FT1001.upcount}" id ="upcount" >
< f:validateLongRange maximum ="#{FT1001.maxUpCount}" />
</ h:inputText >
< h:message for ="upcount" styleClass ="error" />
</ h:panelGroup >
< h:commandButton value ="#{batsys['fttx.FT1001.setcount']}"
action ="FT1001_1" />
< h:outputText value ="#{batsys['fttx.FT1001.sh']}" />
< h:selectOneListbox value ="#{FT1001.branchNo}" size ="1" >
< f:selectItems value ="#{FT1001.branchItems}" />
</ h:selectOneListbox >
</ h:panelGrid >
</ h:form >
< h:form enctype ="multipart/form-data" >
< t:dataTable value ="#{FT1001.fileUploadList}" var ="fileUploadList"
width ="100%" border ="1" align ="center" columnClasses ="center,center" >
< h:column >
< h:outputText value ="#{fileUploadList.xh}" />
</ h:column >
< h:column >
< t:inputFileUpload value ="#{fileUploadList.uploadedFile}"
required ="true" id ="uploadedFile" />
< h:message for ="uploadedFile" styleClass ="error" />
</ h:column >
</ t:dataTable >
< h:panelGrid width ="100" columns ="1" cellspacing ="0" cellpadding ="5"
columnClasses ="right,left" align ="center" >
< h:commandButton value ="#{batsys['GL1001.uploadfile']}"
action ="#{FT1001.storeFile}" styleClass ="button" />
</ h:panelGrid >
</ h:form >
BackingBean:
package
batsys.backingbean.fttx;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import javax.faces.model.SelectItem;
import org.apache.myfaces.custom.fileupload.UploadedFile;
import batsys.biz.BSGL1001;
import batsys.biz.common.FindBranchInfo;
import batsys.biz.common.SearchEnums;
import batsys.enums.EBizType;
import ccbxj.app.AppBackingBean;
import ccbxj.app.AppContext;
import ccbxj.app.web.security.util.WebSecurityUtil;
import ccbxj.dbtable.TNBICodeTran;
import ccbxj.dbtable.TNBranch;
import ccbxj.ss.SSResource;
public class FT1001 extends AppBackingBean {
// 同时上传文件的个数
private int upcount;
// 允许同时上传文件的最大个数,初值在配置BackingBean时定义
private int maxUpCount;
private int bizType;
private String branchNo;
// 放置FT1001VO(上传文件VO)的集合
private List fileUploadList;
private List bizTypeItems = null;
private List branchItems = null;
AppContext ac = WebSecurityUtil.getAppContext();
public void setFileUploadList(List fileUploadList) {
this.fileUploadList = fileUploadList;
}
public int getUpcount() {
return upcount;
}
public void setUpcount(int upcount) {
this.upcount = upcount;
}
public int getBizType() {
return bizType;
}
public void setBizType(int bizType) {
this.bizType = bizType;
}
/**
* 遍历上传文件的集合,并批量上传到服务器磁盘
*
* @return null
*/
public String storeFile() {
BSGL1001 bsgl1001 = new BSGL1001();
try {
if (fileUploadList != null) {
for (Iterator iter = fileUploadList.iterator(); iter.hasNext();) {
FT1001VO ft1001VO = (FT1001VO) iter.next();
UploadedFile uploadedFile = ft1001VO.getUploadedFile();
String of = BSGL1001.uploadFileName(uploadedFile.getName()); // 文件的原始名称
File saveFile = new File(BSGL1001.uploadPath(SSResource
.getUploadPath(), ac)
+ File.separator + of);
bsgl1001.saveFile(ft1001VO.getUploadedFile(), saveFile);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据设定的上传文件数,构造dataTable的List
*
* @return List
*/
public List getFileUploadList() {
fileUploadList = new ArrayList();
FT1001VO ft1001VO = null;
String str = "文件";
for (int i = 1; i <= upcount; i++) {
ft1001VO = new FT1001VO();
ft1001VO.setXh(str + i + ":");
fileUploadList.add(ft1001VO);
}
return fileUploadList;
}
/**
* 查询枚举表,为业务类型下拉列表准备数据
*
* @return List
*/
public List getBizTypeItems() {
try {
SearchEnums se = SearchEnums.getInstance();
List bizTypeList = null;
bizTypeList = se.getEnumsByClassName(EBizType.class.getName());
bizTypeItems = new LinkedList();
if (bizTypeList != null) {
for (Iterator iter = bizTypeList.iterator(); iter.hasNext();) {
TNBICodeTran tnbicodeTran = (TNBICodeTran) iter.next();
bizTypeItems.add(new SelectItem(tnbicodeTran.getCode(),
tnbicodeTran.getName()));
}
setBizTypeItems(bizTypeItems);
}
} catch (Exception e) {
e.printStackTrace();
this.throwException(ac, e, this.getClass().getName(),
"getBizTypeItems", "查询业务类型的下拉列表时抛出Exception");
}
return bizTypeItems;
}
public void setBizTypeItems(List bizTypeItems) {
this.bizTypeItems = bizTypeItems;
}
/**
* 根据部门编码取得下级部门列表,用于文件上传交易第一个页面的部门(所号)列表
*
* @return List
*/
public List getBranchItems() {
try {
List branchList = null;
branchList = FindBranchInfo.getInstance().getBranchList("xj",
ac.getBranchCode());
branchItems = new LinkedList();
if (branchList != null) {
for (Iterator iter = branchList.iterator(); iter.hasNext();) {
TNBranch branch = (TNBranch) iter.next();
branchItems.add(new SelectItem(branch.getBranchNo(), branch
.getBranchNo()
+ "(" + branch.getBranchName() + ")"));
}
setBranchItems(branchItems);
}
} catch (Exception e) {
e.printStackTrace();
this.throwException(ac, e, this.getClass().getName(),
"getBranchItems", "查询部门列表时抛出Exception,当前机构号为:"
+ ac.getBranchCode());
}
return branchItems;
}
public void setBranchItems(List branchItems) {
this.branchItems = branchItems;
}
public String getBranchNo() {
return branchNo;
}
public void setBranchNo(String branchNo) {
this.branchNo = branchNo;
}
public int getMaxUpCount() {
return maxUpCount;
}
public void setMaxUpCount(int maxUpCount) {
this.maxUpCount = maxUpCount;
}
}
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import javax.faces.model.SelectItem;
import org.apache.myfaces.custom.fileupload.UploadedFile;
import batsys.biz.BSGL1001;
import batsys.biz.common.FindBranchInfo;
import batsys.biz.common.SearchEnums;
import batsys.enums.EBizType;
import ccbxj.app.AppBackingBean;
import ccbxj.app.AppContext;
import ccbxj.app.web.security.util.WebSecurityUtil;
import ccbxj.dbtable.TNBICodeTran;
import ccbxj.dbtable.TNBranch;
import ccbxj.ss.SSResource;
public class FT1001 extends AppBackingBean {
// 同时上传文件的个数
private int upcount;
// 允许同时上传文件的最大个数,初值在配置BackingBean时定义
private int maxUpCount;
private int bizType;
private String branchNo;
// 放置FT1001VO(上传文件VO)的集合
private List fileUploadList;
private List bizTypeItems = null;
private List branchItems = null;
AppContext ac = WebSecurityUtil.getAppContext();
public void setFileUploadList(List fileUploadList) {
this.fileUploadList = fileUploadList;
}
public int getUpcount() {
return upcount;
}
public void setUpcount(int upcount) {
this.upcount = upcount;
}
public int getBizType() {
return bizType;
}
public void setBizType(int bizType) {
this.bizType = bizType;
}
/**
* 遍历上传文件的集合,并批量上传到服务器磁盘
*
* @return null
*/
public String storeFile() {
BSGL1001 bsgl1001 = new BSGL1001();
try {
if (fileUploadList != null) {
for (Iterator iter = fileUploadList.iterator(); iter.hasNext();) {
FT1001VO ft1001VO = (FT1001VO) iter.next();
UploadedFile uploadedFile = ft1001VO.getUploadedFile();
String of = BSGL1001.uploadFileName(uploadedFile.getName()); // 文件的原始名称
File saveFile = new File(BSGL1001.uploadPath(SSResource
.getUploadPath(), ac)
+ File.separator + of);
bsgl1001.saveFile(ft1001VO.getUploadedFile(), saveFile);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 根据设定的上传文件数,构造dataTable的List
*
* @return List
*/
public List getFileUploadList() {
fileUploadList = new ArrayList();
FT1001VO ft1001VO = null;
String str = "文件";
for (int i = 1; i <= upcount; i++) {
ft1001VO = new FT1001VO();
ft1001VO.setXh(str + i + ":");
fileUploadList.add(ft1001VO);
}
return fileUploadList;
}
/**
* 查询枚举表,为业务类型下拉列表准备数据
*
* @return List
*/
public List getBizTypeItems() {
try {
SearchEnums se = SearchEnums.getInstance();
List bizTypeList = null;
bizTypeList = se.getEnumsByClassName(EBizType.class.getName());
bizTypeItems = new LinkedList();
if (bizTypeList != null) {
for (Iterator iter = bizTypeList.iterator(); iter.hasNext();) {
TNBICodeTran tnbicodeTran = (TNBICodeTran) iter.next();
bizTypeItems.add(new SelectItem(tnbicodeTran.getCode(),
tnbicodeTran.getName()));
}
setBizTypeItems(bizTypeItems);
}
} catch (Exception e) {
e.printStackTrace();
this.throwException(ac, e, this.getClass().getName(),
"getBizTypeItems", "查询业务类型的下拉列表时抛出Exception");
}
return bizTypeItems;
}
public void setBizTypeItems(List bizTypeItems) {
this.bizTypeItems = bizTypeItems;
}
/**
* 根据部门编码取得下级部门列表,用于文件上传交易第一个页面的部门(所号)列表
*
* @return List
*/
public List getBranchItems() {
try {
List branchList = null;
branchList = FindBranchInfo.getInstance().getBranchList("xj",
ac.getBranchCode());
branchItems = new LinkedList();
if (branchList != null) {
for (Iterator iter = branchList.iterator(); iter.hasNext();) {
TNBranch branch = (TNBranch) iter.next();
branchItems.add(new SelectItem(branch.getBranchNo(), branch
.getBranchNo()
+ "(" + branch.getBranchName() + ")"));
}
setBranchItems(branchItems);
}
} catch (Exception e) {
e.printStackTrace();
this.throwException(ac, e, this.getClass().getName(),
"getBranchItems", "查询部门列表时抛出Exception,当前机构号为:"
+ ac.getBranchCode());
}
return branchItems;
}
public void setBranchItems(List branchItems) {
this.branchItems = branchItems;
}
public String getBranchNo() {
return branchNo;
}
public void setBranchNo(String branchNo) {
this.branchNo = branchNo;
}
public int getMaxUpCount() {
return maxUpCount;
}
public void setMaxUpCount(int maxUpCount) {
this.maxUpCount = maxUpCount;
}
}
VO:
package
batsys.backingbean.fttx;
import org.apache.myfaces.custom.fileupload.UploadedFile;
/**
* 类名: FT1001VO
* <p>
* 功能说明:存储dataTable的一行数据
*
* @version 1.0 2006-9-29
*/
public class FT1001VO {
// 文件上传的序号,如文件1,文件2
private String xh;
private UploadedFile uploadedFile;
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public String getXh() {
return xh;
}
public void setXh(String xh) {
this.xh = xh;
}
}
import org.apache.myfaces.custom.fileupload.UploadedFile;
/**
* 类名: FT1001VO
* <p>
* 功能说明:存储dataTable的一行数据
*
* @version 1.0 2006-9-29
*/
public class FT1001VO {
// 文件上传的序号,如文件1,文件2
private String xh;
private UploadedFile uploadedFile;
public UploadedFile getUploadedFile() {
return uploadedFile;
}
public void setUploadedFile(UploadedFile uploadedFile) {
this.uploadedFile = uploadedFile;
}
public String getXh() {
return xh;
}
public void setXh(String xh) {
this.xh = xh;
}
}
保存文件到硬盘的方法:
/**
* saveFile 保存文件到硬盘
*
* @param uploadedFile
* UploadedFile
* @param savefile
* File 此文件必须创建存在
* @throws IOException
* @throws IOException
*/
public void saveFile(UploadedFile uploadedFile, File savefile)
throws IOException {
byte buff[] = null;
//
File md = savefile.getParentFile();
if (!md.exists()) {
md.mkdirs();
}
//
long fs = uploadedFile.getSize();
FileOutputStream fos = new FileOutputStream(savefile);
if (fs > 1025 * 1024 * 10) { // the upload file is more than 10M byte
buff = new byte[1025 * 500]; // set buff 500k byte
} else {
buff = new byte[1025 * 100]; // set buff 100k byte
}
InputStream is = uploadedFile.getInputStream();
int rb = 0;
rb = is.read(buff);
while (rb > 0) {
fos.write(buff, 0, rb);
rb = is.read(buff);
}
fos.close();
}
* saveFile 保存文件到硬盘
*
* @param uploadedFile
* UploadedFile
* @param savefile
* File 此文件必须创建存在
* @throws IOException
* @throws IOException
*/
public void saveFile(UploadedFile uploadedFile, File savefile)
throws IOException {
byte buff[] = null;
//
File md = savefile.getParentFile();
if (!md.exists()) {
md.mkdirs();
}
//
long fs = uploadedFile.getSize();
FileOutputStream fos = new FileOutputStream(savefile);
if (fs > 1025 * 1024 * 10) { // the upload file is more than 10M byte
buff = new byte[1025 * 500]; // set buff 500k byte
} else {
buff = new byte[1025 * 100]; // set buff 100k byte
}
InputStream is = uploadedFile.getInputStream();
int rb = 0;
rb = is.read(buff);
while (rb > 0) {
fos.write(buff, 0, rb);
rb = is.read(buff);
}
fos.close();
}
faces-config.xml的配置片段:
< managed-bean >
< managed-bean-name > FT1001 </ managed-bean-name >
< managed-bean-class >
batsys.backingbean.fttx.FT1001
</ managed-bean-class >
< managed-bean-scope > session </ managed-bean-scope >
< managed-property >
< property-name > upcount </ property-name >
< value > 1 </ value >
</ managed-property >
< managed-property >
< property-name > maxUpCount </ property-name >
< value > 10 </ value >
</ managed-property >
</ managed-bean >
<
navigation-case
>
< from-outcome > FT1001_1 </ from-outcome >
< to-view-id > /jsp/FT1001_1.jsf </ to-view-id >
</ navigation-case >
< from-outcome > FT1001_1 </ from-outcome >
< to-view-id > /jsp/FT1001_1.jsf </ to-view-id >
</ navigation-case >