سؤال

أريد تحويل إدخال المستخدم الذي يأتي Map<String, String[]> إلى الأشياء في جافا. بشكل أكثر تحديداً ، أريد تحويل معاملات httpservletrequest إلى حقول كائن المجال التعسفي.

أود الحصول على شيء مثل هذا:

Domain d = Converter.convert(params, new Domain());

إذا كان هناك أكثر من عنصر في صفيف السلسلة ، وهو قيمة إدخال الخريطة ، فيجب تحويله إلى قائمة أو صفيف. ربما ينبغي النظر في اللغة لتحويل التاريخ والعملة. وقائمة أخطاء التحويل ستكون لطيفة.

هل هناك مكتبة مع مثل هذا المحول؟

هل تسميها "محول"؟ أعتقد أنه يطلق عليه غالبًا "ربط البيانات" ، ولكن هذا هو المصطلح الخاطئ في Opionion ، لأنه مرتبط بقيم نموذج الربط لعناصر واجهة المستخدم الرسومية ، ما هو الشيء المختلف قليلاً - أليس كذلك؟

هل كانت مفيدة؟

المحلول

إذا لم يدعم إطار الويب الخاص بك هذه الوظيفة إلقاء نظرة على
http://commons.apache.org/beanutils/ ، حزمة BeanUtils بشكل تجاري التي لها فئات بأغراض مماثلة (ربما هي نفسها بالضبط) التي تريدها.

يمكنك أيضًا التفكير في التحول إلى إطار أكثر نضجًا ؛-)

نصائح أخرى

لا تستخدم هذا الرمز العادي لأنه مثال فقط. يجب عليك إضافة بعض معالجة الاستثناءات الجميلة وحلقة من خلال الخريطة. ولكن بشكل عام الفكرة مثل هذا:

void putValue(String name, String value, Object object) throws Exception {
    String setterName = "set"+name.substring(0,1).toUpperCase()+name.substring(1);
    Method m = object.getClass().getMethod(setterName, String.class);
    if (m!=null) {
        m.invoke(object, value);
    }
}

هذا الرمز ، إعطاء اسم المعلمة 'اسم' سأحاول العثور على طريقة setName(String name) ودعاها بالقيمة المحددة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top