2016-10-03 5 views
0

私はどのURLをレンダリングするかを抑止するためにjsスクリプトで使用する文字列値を渡そうとしています。私はいくつかのことを試しましたが、Javaからjsに値をどのように渡しているかと少し外れていると感じます。Mustacheで文字列変数を送信するSpring MVC。

これは私がJavaからjsに値を送るために使用している私のRequestMappingです。

@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

をお試しください: 'VARのGUS = '{{のUserRole}}''; ? – marioosh

+0

@mariooshさん、ありがとうございました。これを答えにしてください。私はそれを受け入れます。ありがとうございました。 – MNM

答えて

1

何単にについてこの

var gus = '{{userrole}}'; 
関連する問題