-1

次のコードでサーブレットを介して JSP ページをディスパッチする場合:

String[] UserList = ViewAllUserBasedOnRights(UserViewBy);
request.getRequestDispatcher("/test/TestGetParameterValues.jsp?UserList="+UserList+"").forward(request, response);

また、JSP ページには " [Ljava.lang.String;@8b3f2a " が表示されます。

このメソッドでは " ViewAllUserBasedOnRights();" 値がデータベースから収集され、 のいずれかNULLまたはセットが返されますStrings

詳細:

public static String[] ViewAllUserBasedOnRights(String UserName) throws Exception{
                String[] retVal = null;
                Connection con=null;
                try{
                con= DatabaseConnectionManager.getDatabaseConnectionManager().getConnection(DatabaseConnectionManager.EAGRO_APP_DB);
                con.setAutoCommit(false);
                Statement stmt = (Statement) con.createStatement();
                Statement stmt1 = (Statement) con.createStatement();
                String SQLStringCount = "....";
                try(ResultSet rs = stmt.executeQuery(SQLStringCount)){
                    int count = -1;
                    while(rs.next()){
                        count = Integer.parseInt(rs.getString("COUNT"));
                    }
                    if(count > 0){
                        String SQLString =".....";

                    System.out.println("SQLString: "+SQLString);
                    try(ResultSet rs1 = stmt1.executeQuery(SQLString)){
                        ArrayList<String> stringList = new ArrayList<String>(); 
                        while(rs1.next()){
                            stringList.add(rs1.getString("USER_NAME"));
                        }
                        String[] temp = new String[stringList.size()];
                        retVal = (String[]) stringList.toArray(temp);
                        con.commit();
                        rs1.close();

                    }catch(SQLException e){
                        try{
                            if(con!=null)
                                extracted(con);
                            }catch(Exception ex){}
                        }
                }
            }catch(SQLException e){
                try{
                    if(con!=null)
                        extracted(con);
                    }catch(Exception ex){}
                }

            }catch(SQLException e){
                try{
                    if(con!=null)
                        extracted(con);
                    }catch(Exception ex){}
                }
            return retVal;
        }

私のJSPページのコードは、非常に単純で、値をキャッチして出力するだけです:

<%
String[] UserList;
UserList = (String[])request.getParameterValues("UserList");
for(int i = 0; i < UserList.length; i++){
%>
<tr>
<td style="border:1px solid black;" align="center"><%=i+1%>
</td>
<td style="border:1px solid black;" align="left" ><%=UserList[i]%>
</td>
</tr>
<% } %>
4

3 に答える 3

1

jspでスクリプトレットを使用することは一般的ではありません。jstlタグを使用できます。

<c:forEach items="UserList" var="temp">
   ${temp}
</c:forEach>

とインポート<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

これに使用する前に

于 2013-03-18T07:22:23.290 に答える
0

ArrayListあなたのコードから、値を送信するために反復ResultSetして文字列配列を作成するときに作成していることがわかります。

として、リクエストをJSPに転送しているためArrayList、リクエストオブジェクトとしてJSPに送信してから、そこで反復する必要があります。

配列の代わりにメソッドからArrayList( return stringList;) を返します。ViewAllUserBasedOnRights(UserViewBy)String

転送時ページ:

List<String> userList = ViewAllUserBasedOnRights(UserViewBy);
request.setAttribute("userList", userList);
request.getRequestDispatcher("/test/TestGetParameterValues.jsp").forward(request, response);

JSP:

<%
List<String> userList;
int nSize=0;
userList = (ArrayList<String>)request.getAttribute("userList");
if(userList!=null){
nSize= userList.size();
}

for(int i = 0; i < nSize; i++){
%>
<tr>
<td style="border:1px solid black;" align="center"><%=i+1%>
</td>
<td style="border:1px solid black;" align="left" ><%=userList.get(i)%>
</td>
</tr>
<% } %>
于 2013-03-18T09:12:20.323 に答える
0

みんなありがとう、私は解決策を得ました。以下のサーブレットとJSPページを編集しました

サーブレットで変更:

String[] UserList = ViewAllUserBasedOnRights(UserViewBy);
request.setAttribute("userList", UserList);
request.getRequestDispatcher("/test/TestGetParameterValues.jsp").forward(request, response);

JSP ページで変更:

<%
String[] UserList = null;
if(request.getAttribute("UserList")!= null){
UserList = new String[((String[])request.getAttribute("UserList")).length];
UserList = ((String[])request.getAttribute("UserList"));
}
for(int i = 0; i < UserList.length; i++){
%>
<tr>
    <td style="border:1px solid black;" align="center"><%=i+1%>
    </td>
    <td style="border:1px solid black;" align="left" ><%=UserList[i]%>
    </td>
</tr>
<% } %>
于 2013-03-18T15:19:38.500 に答える