
在webroot下面防止一個js的文件夾。放入dtree.js還有op.js這個兩個文件
<a href="javascript: d.openAll();">展開所有組織機構</a> | <a href="javascript: d.closeAll();">關閉組織機構</a>
<script type="text/javascript">
<!--
d = new dTree('d');
d.config.folderLinks=true;
//id, pid, name, url, title, target, icon, iconOpen, open
d.add(0,-1,'組織機構','','','');
<%
String sql = "select * from tree";
Connection conn = null;

try
{
conn = getConnection();
ResultSet rst = executeQuery(conn,sql);

while(rst.next())
{
System.out.println("---->"+rst.getString("id"));
System.out.println("---->"+rst.getString("pid"));
%>
d.add(<%=rst.getString("id")%>,<%=rst.getString("pid")%>,'<%=rst.getString("name")%>','','<%=rst.getString("name")%>','<%=rst.getString("target")%>');
<%
}
rst.close();
rst = null;
conn.close();
conn = null;

}catch(Exception ex)
{
out.println(ex.toString());
}
%>
document.write(d);
//-->
</script>
d.add(0,-1,'組織機構','','','');------這里的第一個0表示數據第一個最 根節點的 父親節點的值

如果是0就是0,如果是null那就寫null

還有JavaScript的路徑要寫對。
/Files/spiritahead/js.rar-----里面包含了 要求用到的js
posted @
2009-03-23 09:52 Johnhe 閱讀(162) |
評論 (0) |
編輯 收藏
摘要:
public class Student implements Comparable {
private String userid;
private ...
閱讀全文
posted @
2009-03-10 17:43 Johnhe 閱讀(149) |
評論 (0) |
編輯 收藏
package com.corejava;
public class TestStringSplit {
/**
* @author 袁曉江
*/
public static void main(String[] args) {
String s1 = ";mb001,mb002;xk001,xk002,xk003,xk004;sts001,sts002,sts003,sts004,sts005;;";
String s2 = ";mb001,mb002;xk001,xk002,xk003,xk004;sts001,sts002,sts003,sts004,sts005; ;";
String s3 = ";mb001,mb002;xk001,xk002,xk003,xk004;sts001,sts002,sts003,sts004,sts005;;a";
String s4 = "wxyb001,wxyb004,wxyb005,wxyb007,wxyb008;;xk002;;";
String s5 = ";wxyb001,wxyb004,wxyb005,wxyb007,wxyb008;;xk002;;";
String s6 = ";wxyb001,wxyb004,wxyb005,wxyb007,wxyb008;;xk002;";
String s7 = ";mb001,mb002;xk001,xk002,xk003,xk004;sts001,sts002,sts003,sts004,sts005;;a";
String s8 = ";wxyb001,wxyb004,wxyb005,wxyb007,wxyb008;;xk002;a";
String[] _s1 = s1.split("\\;");
//-----------------4這個地方打印值是4,倒數第二個分號和倒數第一個分號之間是沒有東西的,就不算是么?
System.out.println(_s1.length);
String[] _s2 = s2.split("\\;");
//-----------------5這個地方打印值是5,倒數第二個分號和倒數第一個分號之間是有一個空格
System.out.println(_s2.length);
String[] _s3 = s3.split("\\;");
//-----------------6這個地方打印值是6,倒數第二個分號和倒數第一個分號之間是沒有東西的,但是最后一個分號后面有一個值
System.out.println(_s3.length);
String[] _s4 = s4.split("\\;");
//-----------------3這個地方打印值是3,倒數第二個分號和倒數第一個分號之間是沒有東西的,但是最后一個分號后面有一個值
System.out.println(_s4.length);
String[] _s5 = s5.split("\\;");
System.out.println(_s5.length);//-----------------4
String[] _s6 = s6.split("\\;");
System.out.println(_s6.length);//-----------------4
String[] _s7 = s7.split("\\;");
System.out.println(_s7.length);//-----------------6
String[] _s8 = s8.split("\\;");
System.out.println(_s8.length);//-----------------5
}
}
為什么啊。不是很明白這里的split方法。
后來不得已使用substring截取想要的字符串
posted @
2009-03-10 17:31 Johnhe 閱讀(1389) |
評論 (3) |
編輯 收藏
<html>
<head>
</head>
<body>
<form>
<input type=checkbox name='nID' value='1'> 1<br>
<input type=checkbox name='nID' value='2'> 2<br>
<input type=checkbox name='nID' value='3'> 3<br>
</form>

</body>

<script type="text/javascript" language="javascript">
alert(window.document.getElementsByName("nID")[1].value);
window.document.getElementsByName("nID")[1].checked = true;
</script>
</html>
從數據庫里取值。再勾選。自己點滴記錄吧。很簡單。
要放在下面 script腳本。

if(wxybsb.length > 0)
{

for(var b=0;b<=wxybsbary.length;b++)
{

if(wxybsbary[b]=="wxyb001")
{
window.document.getElementsByName("wxybsb")[0].checked = true;
}
javascript里面 循環 是用var來定義的。不是int 昨天 查了一天 這個小問題。
記錄下。
posted @
2009-03-10 09:41 Johnhe 閱讀(115) |
評論 (0) |
編輯 收藏


String[] test =
{"a","b","c"};
StringBuffer testStr = new StringBuffer();

for(int i =0;i<test.length;i++)
{
testStr.append(test[i]).append(",");
}

String[] test1 =
{};
StringBuffer test1Str = new StringBuffer();
String test1String = "";

if(test1.length == 0)
{
test1String = "";

}else
{

for(int i =0;i<test1.length;i++)
{
test1Str.append(test1[i]).append(",");
}
test1String = test1Str.substring(0, test1Str.length()-1);
}



String[] test2 =
{"e","f","g"};
StringBuffer test2Str = new StringBuffer();
String test2String = "";

if(test2.length == 0)
{
test2String = "";

}else
{

for(int i =0;i<test2.length;i++)
{
test2Str.append(test2[i]).append(",");
}
test2String = test2Str.substring(0, test2Str.length()-1);
}
String testString = testStr.substring(0, testStr.length()-1);
String finalString = "";

if(!testString.equals(""))
{
finalString += testString;
}

if(!test1String.equals(""))
{
finalString += ";"+test1String;
}

if(!test2String.equals(""))
{
finalString +=";"+test2String;
}
System.err.println(finalString);
String sql2 = "update CDS00COR set C001DWMI = '"+2+"' ,dangerstyle = '"+finalString+"' where corpkey = '"+1+"'";
System.out.println("----->"+sql2);
很簡單的。自己記錄下
posted @
2009-03-05 14:26 Johnhe 閱讀(161) |
評論 (0) |
編輯 收藏
中午碰到的問題自己記錄下。關于request.getParameterValues("String")
保存的時候,總是碰到空指針異常
我當時自己知道是request.getParameterValues("String")取到的是空。
解決辦法就是判斷吧-------------->
String wxybsbString = "";


if(request.getParameterValues("wxybsb") == null)
{
wxybsbString = "";
}

if(request.getParameterValues("wxybsb") != null)
{
String[] wxybsb = request.getParameterValues("wxybsb");
StringBuffer wxybsbStr = new StringBuffer();

for(int i=0;i<wxybsb.length;i++)
{
wxybsbStr.append(wxybsb[i]).append(",");
}
wxybsbString = wxybsbStr.substring(0,wxybsbStr.length()-1);
}
System.out.println("袁曉江"+wxybsbString);
這樣就不會碰到空指針了.自己記錄下
posted @
2009-03-05 13:58 Johnhe 閱讀(3297) |
評論 (3) |
編輯 收藏
String[] sid = request.getParameterValues("selectFlag");
UserManager.getInstance().deleteUser(sid);
//for(int i=0; i<sid.length; i++) {
// UserManager.getInstance().deleteUser(sid[i]);
//}
}

/** *//**
* 用數組實現刪除 sql = select from t_user where user_id in ('b001', 'b002',
)
* @param userIds
*/

public void deleteUser(String[] userIds)
{
StringBuffer sbStr = new StringBuffer();

for(int i=0; i<userIds.length; i++)
{
sbStr.append("'")
.append(userIds[i])
.append("',");
}
String sql = "delete from t_user where user_id in (" + sbStr.substring(0, sbStr.length()-1) + ")";
System.out.println("sql= " + sql);
Connection conn = null;
Statement stmt = null;

try
{
conn = DB.getConn();
stmt = conn.createStatement();
stmt.executeUpdate(sql);

} catch(SQLException e)
{
e.printStackTrace();

} finally
{
DB.close(stmt);
DB.close(conn);
}
}
posted @
2009-03-04 17:57 Johnhe 閱讀(136) |
評論 (0) |
編輯 收藏
摘要: <html>
<head>
<script type="text/javascript">
functi...
閱讀全文
posted @
2009-03-04 16:19 Johnhe 閱讀(411) |
評論 (0) |
編輯 收藏
ThreadLocal是一個線程隔離(或者說是線程安全)的變量存儲的管理實體(注意:不是存儲用的),它以Java類方式表現;
synchronized是Java的一個保留字,只是一個代碼標識符,它依靠JVM的鎖機制來實現臨界區的函數、變量在CPU運行訪問中的原子性。
理解ThreadLocal中提到的變量副本
事實上,我們向ThreadLocal中set的變量不是由ThreadLocal來存儲的,而是Thread線程對象自身保存。當用戶調用ThreadLocal對象的set(Object o)時,該方法則通過Thread.currentThread()獲取當前線程,將變量存入Thread中的一個Map內,而Map的Key就是當前的ThreadLocal實例。請看源碼,這是最主要的兩個函數,能看出ThreadLocal與Thread的調用關系:

public void set(T value)
{
Thread t = Thread.currentThread();
ThreadLocalMap map = getMap(t);
if (map != null)
map.set(this, value);
else
createMap(t, value);
}

ThreadLocalMap getMap(Thread t)
{
return t.threadLocals;
}

所謂的變量副本,即是對Object Reference(對象引用)的拷貝
理解Thread和 ThreadLocal對變量的引用關系
實際上Thread和ThreadLocal對變量引用關系就像是坐標系中的X軸和Y軸,是從兩個維度上來組織對變量的引用的。
- 首先說Thread。 我們知道一個ThreadOne的執行會貫穿多個方法MethodA、MethodB、MethodC這些方法可能分布于不同的類實例。假設,這些方法分別使用了ThreadLocalA、ThreadLocalB、ThreadLocalC來保存線程本地變量,那么這些變量都存于ThreadOne的Map中,并使用各自的ThreadLocal實例作為key。 因此,可以認為,借助ThreanLocal的set方法,在X軸上,Thread橫向關聯同一線程上下文中來自多個Method的變量引用副本。

接著說ThreadLocal。 一個MethodA中的X變量將被多個線程ThreadOne、ThreadTwo、ThreadThree所訪問。假設MethodA使用ThreadLocal存儲X,通過set方法,以ThreadLocal作為key值,將不同線程來訪時的不同的變量值引用保存于ThreadOne、ThreadTwo、ThreadThree的各自線程上下文中,確保每個線程有自己的一個變量值。因此,可以認為,ThreadLocal是以Method為Y軸,縱向關聯了處于同一方法中的不同線程上的變量。
posted @
2009-03-04 16:04 Johnhe 閱讀(328) |
評論 (0) |
編輯 收藏
這是pojos:

/** *//**
*
* @author 袁曉江
* @hibernate.class table="t_organization"
*
*/

public class Organization
{

/** *//**
* @hibernate.id
* generator-class="native"
*/
private int id;

/** *//**
* @hibernate.property
*/
private String name;

/** *//**
* @hibernate.property
*/
private String sn;//編號

/** *//**
* @hibernate.property
*/
private String description;

/** *//**
* @hibernate.many-to-one
* column="pid" not-found="ignore"
*/
private Organization parent;
//invserse=true讓多的一方維護一的那一方。

/** *//**
* @hibernate.set inverse="true"
* @hibernate.key column="pid"
* @hibernate.one-to-many
* class="com.oa.model.Organization"
*/
private Set<Organization> children;
附上Organization.hbm.xml的配置文件:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>
<class table="t_organization" name="com.oa.model.Organization">
<id access="field" name="id">
<generator class="native"/>
</id>
<property name="name" access="field"/>
<property name="sn" access="field"/>
<property name="description" access="field"/>
<many-to-one not-found="ignore" column="pid" access="field" name="parent"/>
<!-- inverse="true"的時候 把每個孩子放到父親里的時候,會不存在pid的值 -->
<set access="field" name="children" inverse="true">
<key column="pid"/>
<one-to-many class="com.oa.model.Organization"/>
</set>
</class>
</hibernate-mapping>

--------------------------------------------
這里我放了inverse="true"
--------------------------------------------
這里是我的測試方法:

public class OrgTest2 extends TestCase
{

public void testOrg()
{
Session session = HibernateUtils.getSession();
session.beginTransaction();
Set set = new HashSet();
Organization org2 = new Organization();
org2.setName("org2");
set.add(org2);
Organization org3 = new Organization();
org3.setName("org3");
set.add(org3);
//
Organization org4 = new Organization();
org4.setName("org4");
set.add(org4);
//
Organization org1 = new Organization();
org1.setName("org1");
org1.setChildren(set);
session.save(org1);
session.save(org2);
session.save(org3);
session.save(org4);

session.beginTransaction().commit();
}
存在這樣的一個問題:
就是org2,org3,org4.不能正確的保存到數據庫里。
也就是org2,org3,org4的pid的值都是空。
我仔細查了下原因是inverse="true"造成的
可是我沒有明白到底是怎么回事.?
有人知道為什么么?
讓多的這方去維護.
posted @
2009-03-04 15:58 Johnhe 閱讀(2090) |
評論 (0) |
編輯 收藏