程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> spring-java web項目 傳值問題Spring webwork 框架

spring-java web項目 傳值問題Spring webwork 框架

編輯:編程解疑
java web項目 傳值問題Spring webwork 框架

現有一項目使用的Spring webwork 框架 數據庫使用jdbc 現在前端有數據 。大概60個字段的數據 ,pojo裡有此對象
現在需要前端傳值到後台 希望可以action 可以接受 對象(不想傳輸/接收60個字段那樣pojo裡的對象就沒有意義了)請問使用什麼方式才能傳過來對象呢 ! 求助各位大神 新手好痛苦 補充一下前端使用的EXTJS2

最佳回答:


使用映射,主要就是方法映射,只要傳過來的字段和你的pojo對象裡面的字段一樣,就可以set這個字段。/**

  • Copyright (c) 2011-2015, James Zhan 詹波 ([email protected]). *
  • Licensed under the Apache License, Version 2.0 (the "License");
  • you may not use this file except in compliance with the License.
  • You may obtain a copy of the License at *
  • http://www.apache.org/licenses/LICENSE-2.0 *
  • Unless required by applicable law or agreed to in writing, software
  • distributed under the License is distributed on an "AS IS" BASIS,
  • WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  • See the License for the specific language governing permissions and
  • limitations under the License. */

package com.jfinal.core;

import java.lang.reflect.Method;
import java.util.Map;
import java.util.Map.Entry;
import javax.servlet.http.HttpServletRequest;
import com.jfinal.kit.StrKit;
import com.jfinal.plugin.activerecord.ActiveRecordException;
import com.jfinal.plugin.activerecord.Model;
import com.jfinal.plugin.activerecord.Table;
import com.jfinal.plugin.activerecord.TableMapping;

/**

  • ModelInjector
    */
    final class ModelInjector {

    @SuppressWarnings("unchecked")
    public static T inject(Class<?> modelClass, HttpServletRequest request, boolean skipConvertError) {
    String modelName = modelClass.getSimpleName();
    return (T)inject(modelClass, StrKit.firstCharToLowerCase(modelName), request, skipConvertError);
    }

    @SuppressWarnings({ "rawtypes", "unchecked" })
    public static final T inject(Class<?> modelClass, String modelName, HttpServletRequest request, boolean skipConvertError) {
    Object model = null;
    try {
    model = modelClass.newInstance();
    } catch (Exception e) {
    throw new RuntimeException(e);
    }

    if (model instanceof Model)
        injectActiveRecordModel((Model)model, modelName, request, skipConvertError);
    else
        injectCommonModel(model, modelName, request, modelClass, skipConvertError);
    
    return (T)model;
    

    }

    private static final void injectCommonModel(Object model, String modelName, HttpServletRequest request, Class<?> modelClass, boolean skipConvertError) {
    Method[] methods = modelClass.getMethods();
    for (Method method : methods) {
    String methodName = method.getName();
    if (methodName.startsWith("set") == false) // only setter method
    continue;

        Class<?>[] types = method.getParameterTypes();
        if (types.length != 1)                      // only one parameter
            continue;
    
        String attrName = methodName.substring(3);
        String value = request.getParameter(modelName + "." + StrKit.firstCharToLowerCase(attrName));
        if (value != null) {
            try {
                method.invoke(model, TypeConverter.convert(types[0], value));
            } catch (Exception e) {
                if (skipConvertError == false)
                throw new RuntimeException(e);
            }
        }
    }
    

    }

    @SuppressWarnings("rawtypes")
    private static final void injectActiveRecordModel(Model<?> model, String modelName, HttpServletRequest request, boolean skipConvertError) {
    Table table = TableMapping.me().getTable(model.getClass());

    String modelNameAndDot = modelName + ".";
    
    Map<String, String[]> parasMap = request.getParameterMap();
    for (Entry<String, String[]> e : parasMap.entrySet()) {
        String paraKey = e.getKey();
        if (paraKey.startsWith(modelNameAndDot)) {
            String paraName = paraKey.substring(modelNameAndDot.length());
            Class colType = table.getColumnType(paraName);
            if (colType == null)
                throw new ActiveRecordException("The model attribute " + paraKey + " is not exists.");
            String[] paraValue = e.getValue();
            try {
                // Object value = Converter.convert(colType, paraValue != null ? paraValue[0] : null);
                Object value = paraValue[0] != null ? TypeConverter.convert(colType, paraValue[0]) : null;
                model.set(paraName, value);
            } catch (Exception ex) {
                if (skipConvertError == false)
                    throw new RuntimeException("Can not convert parameter: " + modelNameAndDot + paraName, ex);
            }
        }
    }
    

    }
    }


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved