3

在我的 Web 应用程序中,我需要显示从数据库动态加载的下拉列表。
我需要从数据库加载用户列表。每个用户的“访问级别”为 1 或 2。
当用户显示在下拉列表中时,他们的姓名旁边必须有一张图片。
(如“访问级别”1 的“绿色”勾号)和(访问级别 2 的红叉)。
我已经检查了这个网址http://www.marghoobsuleman.com/jquery-image-dropdown
但我需要根据从数据库加载的访问级别显示图像。
我想这可以通过 JQuery/CSS 来完成。

任何人都可以请告诉如何做到这一点,如果可能的话,请提供示例代码?

4

5 回答 5

4

由于您使用 jsp 作为视图技术,因此请使用核心标记来根据访问级别决定是显示绿色勾号还是红色叉号。

访问此站点以了解有关核心标签使用的更多信息。不要忘记在项目类路径中包含 jstl.jar 和 standard.jar 文件。它们是支持 jstl 的必要库。

看起来您的应用程序是使用 spring 框架开发的,所以我将尝试仅以这种方式进行解释。

您的 JSP 代码将如下所示:将其命名为userlist.jsp

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<!doctype>
<html>
    <head>
       <script src="${pageContext.request.contextPath}/js/jquery-1.3.2.min.js" type="text/javascript></script>
       <script src="${pageContext.request.contextPath}/js/jquery.dd.js" type="text/javascript"></script>
       <link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/css/dd.css" />
    </head>
    <body>
        <form:select id="userNames" path="userName" tabindex="10">
            <form:option value="Select User">Select User</form:option>                
            <c:forEach begin="${userlist begin index (0)}" end="${userlist size}" var="i">
                <c:choose>
                    <c:when test="${userNameList.user.accessLevel == 1}">
                        <form:option style="background-image:url(greentick.png);" value="${userNameList.user.userName}">${userNameList.user.userName}</form:option>
                    </c:when>
                    <c:otherwise>
                        <form:option style="background-image:url(redcross.png);" value="${userNameList.user.userName}">${userNameList.user.userName}</form:option>
                    </c:otherwise>
                </c:choose>
            </c:forEach>
        </form:select>
    </body>
</html>

现在您将拥有一个控制器,该控制器将在调用某些操作后被调用,它将返回此 jsp 以及userNameList。下面是示例UserController.java

@Controller
public class UserController {

    @RequestMapping(value = "/showUsers", method = RequestMethod.GET)
    public String showUserInfo(Model model) {
        // here you prepare the userList, the list of Users along with information
        // here User can be fetched from DB & values stored in User DTO and then DTO in the list
        List<User> userNameList = new ArrayList<User>();
        userNameList.add(User DTO objects go here);
        model.addAttribute("userNameList", userNameList);
        return "userlist";       // remember this is our jsp name
    }
}

& 用户 DTO 可以是这样的。下面是示例User.java

public class User {
    private String userName;
    private int accessLevel;

    // setters & getters of variables
}

这不能完全清楚地回答。我已经尽力解释了。你试试这个。它应该工作。

于 2012-09-27T17:36:16.343 回答
3

我对 JSP 一无所知,但是,我可以为您提供足够的信息,以便您根据自己的知识继续学习。

HTML部分:

<html>
<head>
<title>Sample Title</title>
<script src="msdropdown/js/jquery-1.3.2.min.js" type="text/javascript"></script>
<script src="msdropdown/js/jquery.dd.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="msdropdown/dd.css" />
<script language="javascript">
    $(document).ready(function(e) {
        try {
            $("#webmenu").msDropDown();
        } catch(e) {
            alert(e.message);
        }
    });
</script>
</head>
<body>
<select name="webmenu" id="webmenu">
    //you will need to take this part into the loop of x being count of total users, and loop from first to last
    <option value="<% //output username lowercased here %>" title="<% if(accessLevel == 1){ //printout imagepath for accessLevel = 1 } else if(accessLevel == 2){ //printout imagepath for accessLevel = 2 %>"><% /*output username here*/ %></option>
</select>
</body>
</html>
于 2012-09-24T09:13:05.033 回答
2

在您的网页所需位置编写以下代码以获取并列出用户列表。

rst=stmt.executeQuery("select * from userliat");
<select id="users" name="users">;
<%
String imagePath;
while(rst.next()){
  if(rst.getString("access_level") == "1"){
    imagePath = "greenTick.png";
  }
  else{
    imagePath = "redCross.png";
  }
%>;
<option value="<%= rst.getString("id") %>" title="<%= imagePath %> "><%= rst.getString("user_name") %></option>;
<% } %>
</select>

在您的 head 部分中包含以下 javascript/CSS 插件

<script src="msdropdown/js/jquery-1.3.2.min.js" type="text/javascript></script>
<script src="msdropdown/js/jquery.dd.js" type="text/javascript"></script>
<link rel="stylesheet" type="text/css" href="msdropdown/dd.css" />

在文档准备功能中使用javascript以下内容(它在 head 部分):

<script language="javascript">
    $(document).ready(function(e) {
        try {
            $("#users").msDropDown();
        } catch(e) {
            alert(e.message);
        }
    });
</script>
于 2012-09-24T11:04:50.833 回答
1

考虑到您已经知道如何显示图像,您唯一需要做的就是根据访问级别设置正确的图像 url。

鸟瞰图

if(accesslevel==1)
Image.path="greetick.png";
else
Image.path="redcross.ong";
于 2012-09-21T04:53:13.903 回答
1

我以前做过类似的事情,我使用了 JQuery flexbox 插件。使用起来非常简单。我现在没有代码,但在这里 (http://flexbox.codeplex.com/) 是一个站点,您可以在其中查找如何实现它。

于 2012-09-28T19:29:51.370 回答