اعتدت أن أظن أن SpreepEditor تم توفيره بواسطة SpringMVC ، لكنني اكتشفت اليوم أن هذا قد قدمه JDK ، وهو أمر مدهش!
ماذا يمكن أن يفعل هذا الشيء؟ يمكنك تحويل سلسلة إلى كائن فول. يستخدم SPRING MVC هذا الشيء عند رسم الخرائط النموذج إلى كائن معلمة وحدة التحكم.
انظر مثال:
novedo.java: كائن Javabean قياسي
الفئة العامة NODEDO {اسم السلسلة الخاصة ؛ البريد الإلكتروني الخاص بالسلسلة الخاصة ؛ تاريخ التاريخ الخاص ؛ السلسلة العامة getName () {return name ؛} public void setName (اسم السلسلة) {this.name = name ؛ {this.date = date ؛}@orgridepublic string toString () {return "novedo [name =" + name + "، email =" + email + "، date =" + dodedoeditor.sdf.format (date) + "]" ؛مثل testdo.java ، تتم الرجوع إلى Novedo:
الفئة العامة Testdo {private String Nodename ؛ نومودو نيدويدو الخاص ؛ السلسلة العامة getNodename () {return nodeName ؛ } public void setNodename (string nodename) {this.nodename = nodeName ؛ } novedo getnodedo () {return novedo ؛ } public void setNodedo (nodedo novedo) {this.nodedo = novedo ؛ }}نريد تنفيذ وظيفة مثل هذه:
static static void main (string [] args) يرمي الاستثناء {map <string ، string> parameters = new hashmap <string ، string> () {{put ("nodeName" ، "Xiaopang test") ؛ PUT ("Novedo" ، "Xiaopang| [email protected]| 2015-10-20 12:00:00") ؛ }} ؛ testdo testdo = تحويل (المعلمات) ؛ system.out.println (testdo.getnodename ()) ؛ system.out.println (testdo.getnodedo ()) ؛ } كيفية تحويل الخريطة المعلمات إلى كائن Testdo؟
(1) أولاً ، تحتاج إلى تحديد خاصية تستخدم لتحويل الممتلكات:
الطبقة العامة dodedoeditor يمتد propertyEditorSupport {public static Final SimpleTformat sdf = new SimpleDateFormat ("Yyyy-MM-DD HH: MM: SS") ؛ Override public void setAstext (نص سلسلة) يلقي alfictalArgumentException {string [] Tokens = text.split ("// |") ؛ novedo nodedo = newdoo () جديد ؛ novedo.setName (الرموز [0]) ؛ novedo.setemail (الرموز [1]) ؛ حاول {nodedo.setDate (sdf.parse (الرموز [2])) ؛ } catch (parseException e) {refl new alficalArgumentException (e) ؛ } setValue (novedo) ؛ }}(2) تحويل:
Public Class PropertyEditorSample {static {propertyedItorManager.registereditor (novedo.class ، dodedoeditor.class) ؛ } public static void main (string [] args) يلقي الاستثناء {map <string ، string> parameters = new hashmap <string ، string> () {{put ("nodeName" ، "xiaopang test") ؛ PUT ("Novedo" ، "Xiaopang| [email protected]| 2015-10-20 12:00:00") ؛ }} ؛ testdo testdo = تحويل (المعلمات) ؛ system.out.println (testdo.getnodename ()) ؛ system.out.println (testdo.getnodedo ()) ؛ } تم تحويل Testdo ثابت خاص (MAP <String ، String> Parameters) استثناء {testdo testdo = new testdo () ؛ beaninfo bi = interspector.getBeanInfo (testdo.class) ؛ propertyDescriptor [] pds = bi.getPropertyDescriptors () ؛ لـ (propertyDescriptor pd: pds) {class <؟> propertyType = pd.getPropertyType () ؛ طريقة writemethod = pd.getWritemethod () ؛ if (propertytype == class.class) {// تجاهل} آخر if (propertyType == string.class) {writemethod.invoke (testdo ، parameters.get (pd.getName ())) ؛ } آخر {propertyeditor editor = propertyedItorManager.feriveitor (propertyType) ؛ if (editor! = null) {editor.setastext (parameters.get (pd.getName ())) ؛ writemethod.invoke (testdo ، editor.getValue ()) ؛ } آخر {system.out.println ("لا محرر لـ:"+pd.getName ()) ؛ }} return testdo ؛ }}}في الواقع ، لا يوجد سوى نقطتين رئيسيتين
<pre name = "code"> editor.setastext (parameters.get (pd.getName ()))
ما سبق هو كل المحتوى الذي تم تجميعه هذه المرة. إذا كان لا يزال لديك أي شيء لا تفهمه ، فيمكنك ترك رسالة أدناه للمناقشة. شكرا لدعمكم ل wulin.com.