【问题标题】:Spring MVC i.e Get Model object in which only ArrayList attribute must be initialized and remaining attributes should not be initializedSpring MVC,即获取模型对象,其中只有 ArrayList 属性必须初始化,其余属性不应初始化
【发布时间】:2015-09-02 12:48:23
【问题描述】:

======NewContact.jsp==============0

在这里,我得到了 Model 对象并进行了愉快的渲染。

======Users.java(模型类)======1

package com.one.model;
import java.util.ArrayList;
public class Users
{

  private ArrayList<String> al;
  private String x;
  private int y;

  // getters and setters

   }

===============UsersDao.java(Dao接口)========2

package com.one.dao;
import com.one.model.Users;
public interface UsersDao {
   public Users getModified(Users glist);
   }
}

==============UsersDaoImpl.java(Dao实现)=======3

package com.one.daoimpl;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import javax.sql.DataSource;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import com.one.dao.UsersDao;
import com.one.model.Users;

public class UsersDaoImpl implements UsersDao {

private JdbcTemplate jdbcTemplate;
public UsersDaoImpl(DataSource dataSource) 
{
    jdbcTemplate = new JdbcTemplate(dataSource);
}


@Override
public Users getModified(Users glist)
{
    String sql1 = "SELECT user_group FROM users";
   //Here I was strucked.
    return glist;
}

}

在这里,我被击中了。我有 JdbcTemplate 类 obj。这是 Spring MVC 应用程序。我可以在这里执行其他查询,没问题。并且在视图页面中显示所有值没问题。但我需要在 NewContact.jsp 中获取下拉菜单。为此,我在 Controller 类中创建模型对象并将该模型对象发送到 NewContact.jsp 即视图页面。但是我怎样才能只从数据库表中注入 user_group 值,假设“users”(是表)和“name,sal,user_group”(是“users”表的列)。

最后,当我从 UsersDaoImpl 类返回一个对象(即 Model'Users.java' 的对象)时,只有模型对象“ArrayList al”必须初始化。但不应初始化 x 和 y 变量。我不想在这里使用 AJAX。

【问题讨论】:

  • 我已将您的问题编辑为将代码格式化为代码,因为您是新来的。下一次,格式正确,直到看起来正确才发布。
  • 哦!对不起。我对这个环境很陌生。谢谢

标签: java spring spring-mvc jdbc


【解决方案1】:

您可以在此处首先创建一个 DAO 实现,该实现返回您要在下拉菜单中显示的对象列表。然后在您的控制器方法之一中使用 Spring 注释 @ResponseBody,并返回 @987654322 @ 包含要包含在下拉列表中的值的数组。

    @RequestMapping(value = "/url", method = RequestMethod.GET)
    public @ResponseBody List<Object> getObject() {
        //from here call the DAO implementation for returning the object, even tho you suppose to include a service layer.
    }

现在,您需要在 JSP 中使用一些 jQuery:

一个简单的下拉菜单可以是这样的:

<script type="text/javascript">
        $(document).ready(
            function() {
                $.getJSON('<spring:url value="your JSON file URL path here"/>', {
                    ajax : 'true'
                }, function(data){
                    var html = '<option value="">--Please select one--</option>';
                    var len = data.length;
                    for (var i = 0; i < len; i++) {
                        html += '<option value="' + data[i].desc + '">'
                                + data[i].desc + '</option>';
                    }
                    html += '</option>';

                    $('#dropDownSelect').html(html);
                });

            });

    </script>

还有 JSP:

<select id="dropDownSelect"/>

【讨论】:

  • 不使用JQuery,Ajax是否可以
  • 先生,其实我对JQuery,Ajax..等一无所知
  • 如果你不想使用 jquery,你可以看看这个,应该让你开始很好:mkyong.com/spring-mvc/spring-mvc-dropdown-box-example
  • 只发送新对象到 NewContact.jsp,我需要发送模型对象,其中只有 ArrayList 属性用值初始化
  • 不,你可以创建一个只包含UserGroups的列表,例如List&lt;UserGroups&gt; list;并且你只需要创建一个DAO实现,比如这样:public List&lt;UserGroups&gt; getUserGroups(){ ...here you use JDBC to return the data...}
【解决方案2】:

我认为您最好的选择是创建一个表单类来在获取值后对其进行初始化。在控制器中,在将表单添加到模型之前,将列表设置为空。

【讨论】:

  • 能否提供相关的网址。然后我可以很容易地得到相关信息。我的意思是到目前为止我还没有使用表单类。
猜你喜欢
  • 2013-12-16
  • 1970-01-01
  • 1970-01-01
  • 2013-10-28
  • 1970-01-01
  • 1970-01-01
  • 2016-02-24
  • 2019-09-06
相关资源
最近更新 更多