科技+生活
"世界不会在意你的自尊 人们看的只是你的成就。在你没有成就以前 切勿过分强调自尊。" ——比尔盖茨
2013年7月4日星期四
[ADF技术-011] 如何在backingbean中执行javascript
/**
* 通过后台执行前台的JS代码
* @param script
*/
public static void script(String script) {
FacesContext facesContext = FacesContext.getCurrentInstance();
try {
ExtendedRenderKitService service =
Service.getRenderKitService(facesContext, ExtendedRenderKitService.class);
service.addScript(facesContext, script);
} catch (Exception ex) {
ex.printStackTrace();
}
}
以上代码可以在backingbean中执行js
不过一定要注意一点:调用以上方法的按钮一定要设置partialSubmit="true"
2013年5月29日星期三
[Go Lang-006] Go基础-全局变量与局部变量
package main
import (
"fmt"
)
var a="a"
func main() {
fmt.Println("func main",a)
j()
g()
k()
}
func g(){
fmt.Println("func g",a)
}
func j(){
//局部作用域
//a:="j"
//全部作用域
a="j"
fmt.Println("func j",a)
}
func k(){
fmt.Println("func k",a)
}
以上程序有个注意的地方
当func j()中的局部变量的注释打开,a:="j"(红色部分)时
打印
func main a
func j j
func g a
func k a
当func j()中的全部变量的注释打开,a="j"(蓝色部分)时
func main a
func j j
func g j
func k j
就是a="j"和a:="j"的区别,差了一个分号,就差别那么大?看下下面的解释大家就懂了..
其实
a="j"的意思就是把全局变量a重新赋值成"j"
a:="j"的意思就是重新定义一个新的局部变量a并赋值成"j"
[ADF技术-010] VO的ID字段自动获取Sequence
获取Sequence有两种不同的方法
1.Groovy表达式获取
该方法是view的iterator中创建一行的时候就通过groovy表达式获取Seq中的值并赋值到id字段中,该方法有个缺点:如果事务回滚了或者创建的行没保存,就会造成Seq跳值
1.2.Default Value中选择Expression(表达式)
并填入(new oracle.jbo.server.SequenceImpl(SEQ名称,adf.object.getDBTransaction())).getSequenceNumber()
2.提交事务时候之前获取
该方法是通过在提交事务之前手工获取对应的seq值并赋值到id字段中,是第一个方法很好的补充
2.2.找到java类中的doDML方法,并重写
代码如下
/**
* Custom DML update/insert/delete logic here.
* @param operation the operation type
* @param e the transaction event
*/
protected void doDML(int operation, TransactionEvent e) {
if (operation == DML_INSERT) {
if(this.getCompanyId()==null){
this.setCompanyId((new oracle.jbo.server.SequenceImpl(SEQ名称, this.getDBTransaction())).getSequenceNumber().intValue());
}
}
super.doDML(operation, e);
}
2013年5月20日星期一
[Go Lang-005] Go基础-Array,Slice,Map
Array
Array(数组)是固定长度,相同类型的集合,因为是固定长度,因此大小不能改变.
参考文献
1.http://www.cnblogs.com/yjf512/archive/2012/06/14/2549929.html
Array(数组)是固定长度,相同类型的集合,因为是固定长度,因此大小不能改变.
1.1.创建Array
有两种初始化方式
1.1.1.固定长度
var a [3]int
1.1.2.自动统计长度
var a [...]int{1,2,3}
中括号用...代替长度值,就会自动元素个数并赋值长度
Slice
Slice(切片)是非固定长度,相同类型的集合,如果有新元素加入,Slice会增加长度,并且Slice总是指向一个底层的Array,是一个指向Array的指针
2.1.创建一个长度为10,空的Slice
slice:=make([]int,10)
2.2.创建一个非空的slice
slice:=[]int{1,2,3}
注意:这里很容易搞错,上面是slice,下面是array
slice:=[...]int{1,2,3}
差别就是在于中括号中的数字,有数字就是array,没有就是slice
2.3.创建一个Array,并且初始化Slice
var a [...]int{1,2,3}
slice:=[1:3]
各种例子
a:=[...]int{1,2,3,4,5}
//从数组a中取出大于2,小于等于4的数字
s1:=a[2:4]
//从数组a中取出大于1,小于等于5的数字
s2:=a[1:5]
//用a中所有元素创建slice,这是a[0:len(a)]的简化写法
s3:=a[:]
//从序号0到3创建,这是a[0:4]简化写法,得到1,2,3,4
s4:=a[:4]
//从s2创建slice,注意s5的指针扔向指向a
s5:=s2[:]
2.4.追加slice元素
s0:=[]int{1,2}
//向s0中追加元素3
s1:=append(s0,3)
//向s0中追加多个元素
s2:=append(s0,3,4,5)
//向S0中追加一个slice
s3:=append(s0,s2...)
2.5.复制slice元素
a:=[...]int{1,2,3,4,5}
var s1=make([]int,6)
//copy(target,src),src:源数组,target目标数组,返回函数是复制了多少个元素
s2:=copy(s1,a[0:])
println("s2",s2);
Map
Map可以理解为是一个有索引的数组,一般定义形式为map[from type(key type)]to type(value type)
monthDays:= map[ string] int {
"Jan" :31,"Feb" :30,"Mar" :31,
"Apr" :30,"May" :30,"Jun" :30,//<<<<<最后这个逗号是必须的!
}
3.1.读取
println( "May:" ,monthDays["May" ]);
3.2.增加元素
monthDays[ "Dec"]=29
3.3.删除元素
delete(monthDays,"May")
3.4.检查元素是否存在
var value int //<<<接收value
var isExist bool//<<<返回true/false标识是否存在
value,isExist =monthDays["Jan"]
另外一种方式
value,isExist:=monthDays["Jan"]
参考文献
1.http://www.cnblogs.com/yjf512/archive/2012/06/14/2549929.html
[Go Lang-004] Go基础-赋值
Go赋值有两种方法
1.先定义类型再赋值
package main
import (
)
func main(){
//定义一个变量a类型为int
var a int
//将变量a赋值为1,如果不初始化默认为0
a=1
//打印变量a
println("a:",a);
}
注意:定义变量的时候切记和java是有区别的哦..亲...
java:int a;
go:var a int
多个变量同时赋值
//初始化,这种方式成为group
var(
a int
b string
)
注意:使用group方式赋值的时候注意
var和括号一定要在同一行
如:
var(
不能写成不在同一行
如:
var
(
会报错
//赋值
a=1
b="2"
2.直接赋值
package main
import (
)
func main(){
//将变量a赋值为1,不需要定义类型,类型由赋值推演出来
a:=1
//打印变量a
println("a:",a);
}
多个变量同时赋值
a,b:=1,2
1.先定义类型再赋值
package main
import (
)
func main(){
//定义一个变量a类型为int
var a int
//将变量a赋值为1,如果不初始化默认为0
a=1
//打印变量a
println("a:",a);
}
注意:定义变量的时候切记和java是有区别的哦..亲...
java:int a;
go:var a int
多个变量同时赋值
//初始化,这种方式成为group
var(
a int
b string
)
注意:使用group方式赋值的时候注意
var和括号一定要在同一行
如:
var(
不能写成不在同一行
如:
var
(
会报错
//赋值
a=1
b="2"
2.直接赋值
package main
import (
)
func main(){
//将变量a赋值为1,不需要定义类型,类型由赋值推演出来
a:=1
//打印变量a
println("a:",a);
}
多个变量同时赋值
a,b:=1,2
订阅:
评论
(
Atom
)



