1

一部の JavaScript で Spring Source Security ユーザー変数 ${username} にアクセスしようとしていますが、空の文字列として返され続けます。前のページでは、単純に ${username} でユーザー名を表示しています。私が知る限り、JavaScriptでこれを取得するために必要なことは次のとおりです。

<c:out value="${username}"/>

しかし、以下のコードでは、生成された HTML には常に空の文字列が含まれています。私は何が欠けていますか?

<%@ page session="false"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>The Admin Page</title>
<style type="text/css">

    .wideCols .field-radio { width: 5%; }
    .wideCols .field-username { width: 15%; }
    .wideCols .field-firstName { width: 15%; }
    .wideCols .field-lastName { width: 20%; }
    .wideCols .field-email { width: 40%; }
    .wideCols .field-enabled { width: 5%; }
</style>
</head>
<body>
    <h1>Users</h1>
    <spring:url value="/admin/addUser" var="accountUrl" />

    <a href="${accountUrl}">Add User</a> 
    <div id="result1"></div>

    <div id="grid" class="wideCols"></div>
    <!-- <button type="button" id="saveNode"></button>  -->


    <script type="text/javascript">
        require([ "dojo/store/JsonRest",
                  "dojo/_base/declare",
                  "dgrid/OnDemandGrid",
                  "dgrid/Selection", 
                  "dgrid/editor",
                  "dgrid/selector",
                  "dojo/domReady!" 
                ], function(JsonRest, declare, OnDemandGrid, Selection, editor, selector) {

            var userAccountStore = new JsonRest({
                idProperty : "userAccountId",
                target : "<c:url value="/userMgr/" />"
            });

            window.grid = new (declare([OnDemandGrid, Selection]))({                
                store : userAccountStore,           
                columns:  [ selector({ label: 'radio'}, "radio"),
                            { label: "Username", field: "username"}, 
                            { label: "First Name", field: "firstName"}, 
                            { label: "Last Name", field: "lastName"}, 
                            { label: "Email", field: "email"}, 
                            editor({ label: "Enabled", field: "enabled", autoSave: "true", canEdit: function(object){
                                return object.username != "<c:out value="${username}"/>";
                            }, }, "checkbox")],
            }, "grid"); 

        });

    </script>
</body>
</html>
4

1 に答える 1

3

ユーザー名はモデルに自動的に追加されません。コントローラーでそれを行う必要があります。または、コントローラーコードにアクセスできない場合は、Spring Security taglib で非推奨のメソッドを使用できます。

<sec:authentication property="principal.username" />

詳細については、 http://static.springsource.org/spring-security/site/docs/3.0.x/reference/taglibs.html#d0e6295を参照してください。

于 2013-04-04T14:10:46.970 に答える