#javascript #java #spring #model-view-controller #mustache
#javascript #java #весна #модель-представление-контроллер #усы
Вопрос:
Я пытаюсь передать строковое значение для использования в моем js-скрипте для определения того, какой URL-адрес я должен отображать. Я попробовал несколько вещей, но я чувствую, что есть небольшая разница в том, как я передаю значение в js из java.
Итак, это мое сопоставление запросов, которое я использую для отправки значения в js из java.
@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 resu<
}
}
Комментарии:
1. Как насчет просто:
var gus = '{{userrole}}'
; ?2. @marioosh, это сработало, большое вам спасибо. Пожалуйста, укажите это как ответ, и я приму его. Еще раз спасибо.
Ответ №1:
Попробуйте это
var gus = '{{userrole}}';