带有Mustache的Spring MVC发送一个字符串变量。

时间:2016-10-03 07:26:11

标签: javascript java spring model-view-controller mustache

我正在尝试传递一个字符串值,以便在我的js脚本中使用,以阻止我应该渲染哪个url。我尝试了一些东西,但我觉得我将如何将值传递给java中的js略有脱节。

所以这是我使用的RequestMapping,用于将值从java发送到js。

  @RequestMapping(value = HOME_URL_MAPPING)
public String inventory(final Model model) {

    String userRole = "HQ";

    model.addAttribute("userrole", userRole);
    return controllerHelper.createUrl(INVENTORY, WebGlobals.HOME);
}

这是我使用构建视图的HTML文件;

{{>partials/header}}

 <script type="text/javascript">
 //var gus = $("userrole").val(); // undefined
 //var gus = '${userrole}'; //Returns ${userrole}
 //var gus = $('userrole').val(); //This get undefined?
 //var gus = $('userrole'); //This returns [object Object]
 //var gus = ${'userrole'}; //Dont work
 //var gus = ${userrole}; // Dont work
 //var gus = ${userrole}  Dont Work
 //var gusRole = ${userrole.name} Dont work
 //var gus = {{userrole}} //undeefined
//var gus = {{userrole}}; //undefined
var gus1 = "HQ"

var haveClicked = false; 
var myRole = "ADMIN"


 function checkUserRights()
 {
     alert("The Ships Going down all on account of the weather");
     alert(gus); //Prints off the value of Gus which will be the role of the user

if(haveClicked == false)
    {
        switch(myRole) // I want to put gus here to test
        {
            case "ADMIN":
                alert("Opening ADMIN Rights");
                $('<a href="/inventory/view"> H Group</a>').appendTo($('body'));
                $('<a href="/inventory/approve"> A Group</a>').appendTo($('body'));
                haveClicked = true;
                break;
            case "HQ":
                alert("Opening H Rights");
                $('<a href="/inventory/view"> H Group</a>').appendTo($('body'));
                haveClicked = true;
                break;
            default: 
                alert("Opening A Rights");
                $('<a href="/inventory/approve"> A Group</a>').appendTo($('body'));
                haveClicked = true; 
        }
}//end of if checker

}

 {{>partials/footer}}

这是我的控制助手。

@Component
public class ControllerHelper {
private static final Logger logger =       LoggerFactory.getLogger(ControllerHelper.class);

private final MessageSource messages;
private final String version;

@Autowired
public ControllerHelper(
        final MessageSource messages,
        @Value("${version}") final String version)
{
    this.messages = Validate.notNull(messages);
    this.version = Validate.notBlank(version);
}

public String getVersion() {
    return StringUtils.stripToEmpty(version);
}

public void addCommonAttributes(final Model model) {
    if (model == null) return;
    model.addAttribute("version", getVersion());
}

public String getMessage(final String code, final String defaultMessage) {
    return messages.getMessage(code, null, defaultMessage, getLocale());
}

public String getMessage(final String code, final Object[] args, final String defaultMessage) {
    return messages.getMessage(code, args, defaultMessage, getLocale());
}

public static Locale getLocale() {
    return Globals.DEFAULT_LOCALE;
}

public static String getCurrentUserName() {
    final Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    if (auth == null) return "anonymous";
    return auth.getName();
}

public static ResponseEntity<Map<String, Object>> displayErrorResponse(final Exception exception) {
    String errorMessage = exception.getMessage();

    if (exception.getClass() == InvalidUserInputException.class) {
        logger.info("USER ERROR: " + errorMessage);
    }
    else {
        logger.error("ERROR: " + errorMessage);
    }

    final Map<String, Object> error = new HashMap<>();
    error.put("error", errorMessage);       

    ResponseStatus exceptionResponseStatus = exception.getClass().getAnnotation(ResponseStatus.class);

    // Set as bad request if no response status set for exception
    return ResponseEntity.status(exceptionResponseStatus == null ? HttpStatus.INTERNAL_SERVER_ERROR : exceptionResponseStatus.value()).body(error);
}

public String createUrl(String... pathElements) {
    int numberOfPathElements = pathElements.length;
    if (numberOfPathElements == 0) return "";

    String result = pathElements[0];
    for (int iter = 1; iter < numberOfPathElements; iter++) {
        result += "/" + pathElements[iter];
    }

    return result;
}

}

1 个答案:

答案 0 :(得分:1)

试试这个

var gus = '{{userrole}}';