下面是在做实际项目的时候总结的一些实用代码和知识,如果有误或者有看不懂的地方,可以联系我(金乾乾)大家一起探索,便于大家共同
学习进步。
最后修改时间:16:49 2011/11/3
1.使用clientAttribute传值、获取值 或组件上面放客户端属性
autoSubmit="true"
valueChangeListener="#{viewScope.BulkProcessBean.onSelect}">
public void onSelect(ValueChangeEvent valueChangeEvent) {
Number id = (Number)valueChangeEvent.getComponent().getAttributes().get("employeeId");
...
}
注意:客户端属性名不能与其父组件的属性名重复,否则会得到第一个属性名的值。
(这里的employeeId必须是和selectBooleanCheckbox的属性名不同)
又例:
binding="#{tuiDanBean.eprebateBackBtn}"
action="#{tuiDanBean.eprebateBack_action}">
value="#{row.Status}"/>
bean中获取属性值:
String num =String.valueOf(eprebateBackBtn.getAttributes().get("status"));
----------------------------------------------------------------
2.为id设置seqence值
(new oracle.jbo.server.SequenceImpl("employees_seq",object.getDBTransaction())).getSequenceNumber()
在eo中设置目标属性,勾选表达式,然后编辑值。
---------------------------------------------------------------
3.根据table创建行,并赋值
(1)
CollectionModel _tableModel = (CollectionModel)table.getValue();
JUCtrlHierBinding _adfTableBinding =(JUCtrlHierBinding)_tableModel.getWrappedData();
DCIteratorBinding it = _adfTableBinding.getDCIteratorBinding();
oracle.jbo.Row row_adf = null;
row_adf = it.getNavigatableRowIterator().createRow();
row_adf.setNewRowState(oracle.jbo.Row.STATUS_INITIALIZED);
it.getNavigatableRowIterator().insertRow(row_adf);
row_adf.setAttribute("DepartmentId",row_poi.getCell(0).getNumericCellValue());
(2)
CollectionModel _tableModel = (CollectionModel)eprebateTable.getValue();
JUCtrlHierBinding _adfTableBinding =
(JUCtrlHierBinding)_tableModel.getWrappedData();
DCIteratorBinding it = _adfTableBinding.getDCIteratorBinding();
NavigatableRowIterator iterator = it.getNavigatableRowIterator();
Row row=iterator.createRow();
row.setNewRowState(oracle.jbo.Row.STATUS_NEW);
row.setAttribute("Num", 4);
iterator.insertRow(row);
(3)
import oracle.binding.BindingContainer;
import oracle.binding.OperationBinding;
BindingContainer bindings = getBindings();
OperationBinding operationBinding = b
indings.getOperationBinding("CreateInsert1");
operationBinding.execute();
CollectionModel _tableModel = (CollectionModel)eprebateTable.getValue();
JUCtrlHierBinding _adfTableBinding =
(JUCtrlHierBinding)_tableModel.getWrappedData();
DCIteratorBinding it = _adfTableBinding.getDCIteratorBinding();
NavigatableRowIterator iterator = it.getNavigatableRowIterator();
Row currentRow = iterator.getCurrentRow();
currentRow.setAttribute("Num", iterator.getRowCount());
注意:以上三种方式需要在页面中对table进行绑定,第三种还要做操作绑定。
-----------------------------------------------------------------------------
4.得到页面table的迭代器
private NavigatableRowIterator getTableIter(RichTable table){
CollectionModel _tableModel = (CollectionModel)table.getValue();
JUCtrlHierBinding _adfTableBinding =
(JUCtrlHierBinding)_tableModel.getWrappedData();
DCIteratorBinding it = _adfTableBinding.getDCIteratorBinding();
return it.getNavigatableRowIterator();
}
NavigatableRowIterator iterator = getTableIter(vflistTable);
Row currentRow = iterator.getCurrentRow();
currentRow.setAttribute("Status", 0);
currentRow.setAttribute("Isback", "1");
am.getTransaction()mit();
------------------------------------------------------------------------------
5.格式化时间
import java.util.Date;
import java.text.SimpleDateFormat;
SimpleDateFormat sdf = new SimpleDateFormat();
sdf.applyPattern("yyyyMMdd");
以上两句可写成:SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
Date date = new Date();
String second = sdf.format(date);
如果还要时分秒: HH:mm:ss
注意:如果是时间类是oracle.jbo.domain.Date,用
sdf.format(currDate.dateValue())
---------------------------------------------------------------------------------
6.必填 必选
showRequired="true" 显示蓝色星号,不填没有错误信息 加上autocommit=true 不填有错误信息
required="true" 显示蓝色星号,不填有错误信息
requiredMessageDetail="没钱不干活啊!!!" 显示错误信息
-------------------------------------------------------
7.下面的
程序使用param隐含对象来取得使用者输入的参数以及一些jsf基础知识:
(1)--------------------------------------------------------
<%@ taglib uri="java.sun/jsf/core" prefix="f" %>
<%@ taglib uri="java.sun/jsf/html" prefix="h" %>
<%@page contentType="text/html; charset=Big5"%>
xml:namespace prefix = f />
您好,
param是JSF-EL预设的隐含对象变量,它代表request所有参数的集合,实际是一个java.util.Map型态对象,J
SF所提供的隐含对象,大致上对应于
JSP隐含物件,不过JSF隐含对象移除了pageScope与pageContext,而增加了facesContext与view,它们分别对应于 javax.faces.context.FacesContext与javax.facesponent.UIViewRoot。
对于Map型态对象,我们可以使用 '.' 运算子指定key值来取出对应的value,也可以使用 [ ] 来指定,例如:
...
您好,
...
在 [ ] 之间,也可以放置其它的变量值,例如:
...
...
如果变量是List型态或数组的话,则可以在 [] 中指定索引,例如:
....
value="#{someBean.someListOrArray[user.age]}"/>
....
您也可以指定字面常数,对于true、false、字符串、数字,JSF EL会尝试进行转换,例如:
....
....
....
如果要输出字符串,必须以单引号 ' 或双自变量 " 括住,如此才不会被认为是变量名称。
在宣告变量名称时,要留意不可与JSF的保留字或关键词同名,例如不可取以下这些名称:
true false null div mod and or not eq ne lt gt le ge instanceof empty
(2)----------------------------------------------------------------
(3)----------------------------------------------------------------
<%@ taglib uri="java.sun/jsf/core" prefix="f