jsp頁面的值是通過struts的action注入的pojo實體類屬性來賦值的:
例如:頁面有...等等控制項,他們的值都進行了類似的繫結。那麼在對應的action中必然有users類的物件users與之對應,且有setter和getter方法。
那麼關鍵來了,這個時候,我們頁面要做乙個修改功能,通常我們的做法是:
1.1 先通過hibernate的 load(類.class,主鍵值) 或者get(類.class,主鍵值)得到欲修改的物件的控制代碼,我們暫且把他取名為entity;
1.2 然後就是要把頁面上不為空(null)的控制項的值填充到entity中,這裡也就是把users中不為空的屬性的值覆蓋掉entity裡的值;
我們通常的做法是:
if(users.name!=null)
if(users.email!=null)
.
.
.
這個要是pojo實體users類只有幾個欄位那也就罷了,可是要是不幸的有三四十個字段,那絕對能搞死你呀!!!
怎麼辦?
(2)這個方法是這樣的,有時候你會呼叫乙個類的方法,這個方法呢有乙個物件引數,這個物件在呼叫方法裡要使用,在被呼叫方法裡也要使用而且不能衝突,啥意思?看例子:
public role role = new role();
public void amethod(users users)
public void bmethod()); //獲取getter方法
method setmethod = oldclass.getclass().getmethod(setmethodname,new class);//獲取setter方法
//大家可能對上面的new class{}很疑惑,是這樣的,這是乙個空的class陣列,這個能看明白吧,那麼{}裡面存放的就是class,他表示這個方法的引數型別。
//如上的setmethod:
// ,new class表示setter方法的第乙個引數的型別同field一樣
//下面就是關鍵了:首先呼叫oldclass中getmethod,得到值,然後判斷值是否為空,不為空再賦值給newclass物件的對應字段
object getvalue = getmethod.invoke(oldclass, new object{});
if(getvalue!=null));
}
}}
/**完全賦值乙個類的例項
* @param object
* @return
* @throws exception
* @author chenqz
* @date 2023年9月5日 17:41:42
*/public t copy(t object) throws exception );
method setmethod = classtype.getmethod(setmethodname, new class );
object getvalue = getmethod.invoke(object, new object {});
setmethod.invoke(consobj, new object );
} return (t) consobj; }
public static void main(string args) catch (exception e)
} }class users
public void setusername(string username)
public string getemail()
public void setemail(string email)
}
JAVA 物件轉殖clone
有時候我們希望轉殖乙個已存在的物件,並對其進行操作,但是不希望改變原物件,這時使用clone技術就非常方便了。但是使用clone,也有一些需要注意的地方,因為clone有淺層轉殖和深層轉殖。還是習慣先直接上 結合 講解。注 如果你希望某個類具有clone功能,該類必須實現介面cloneable,它是...
Java中的物件轉殖
當拷貝乙個變數時,原始變數和拷貝變數引用同乙個物件,當改變乙個物件的例項域的值時,其他的物件相應的也將受到影響。employee em new employee em2 em 如果建立乙個物件的新的copy,它的最初狀態和original一樣,但以後將可以各自改變各自的狀態,那就需要使用clone方...
java物件比較器和轉殖
一.比較器comparable和comparator public class mystring person b arrays.sort a for int i 0 i system.out.print a i system.out.print r n arrays.sort b for int ...