Я новичок в Spring, но я обнаружил это рабочее решение. Скажите, пожалуйста, если это неприемлемо.
Я делаю Spring applicationContext
в этом компоненте:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationContext;
import org.springframework.stereotype.Component;
@Component
public class SpringUtils {
public static ApplicationContext ctx;
/**
* Make Spring inject the application context
* and save it on a static variable,
* so that it can be accessed from any point in the application.
*/
@Autowired
private void setApplicationContext(ApplicationContext applicationContext) {
ctx = applicationContext;
}
}
Вы можете поместить этот код в основную класс приложения, если вы хотите.
Другие классы могут использовать его следующим образом:
MyBean myBean = (MyBean)SpringUtils.ctx.getBean(MyBean.class);
Таким образом, любой bean-компонент может быть получен любым объектом в приложении (также запутанным с new
) и статическим способом.
Функция, которая обрабатывает событие, должна выглядеть следующим образом:
function calc_keydownHandler(e){
var target = e.target;
//do something with the target now
}
Поскольку у вас есть аргумент target, ссылка будет target.target, что не имеет смысла.
Это все addEventListener
утверждение является условным, что эквивалентно действию:
true && true;
Он ничего не делает. Добавьте оператор if
(также убедитесь, что вы передаете ev.target
в calc
в качестве аргумента:
function calc(target){
if (target.value.length > 0){
console.log("hooray");
};
};
if (aV) {
a.addEventListener("keydown", function(ev){
if(ev.keyCode == 13){
calc(ev.target);
};
});
}