- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我认为这很容易做到,但我在 Google 和 StackOverflow 上搜索了几个小时,但没有成功。
首先,我有一个使用 Dojo 的 jsp 页面。我使用 Dojo 的请求模块对 Spring Controller 进行 AJAX 调用以执行各种操作。 Controller 调用服务,服务调用 DAO,等等。
最初,我有一个属性文件,其中包含我的站点的多个配置设置。这些被使用 @Value 注入(inject)到各种 Spring 组件中。我想从我的管理页面动态配置这些,因此我添加了一个名为“SiteSettings”的域对象,它保存属性文件中的值。当我的 web 应用程序启动时,如果它无法持久保存 SiteSettings 对象,它会创建一个新对象,用我的属性文件中的设置填充它,然后保留它。如果一个人已经坚持了,它就会使用它。
所有站点属性都在后端使用,除了一个名为“authenticationRequired”的 boolean 值之外。我需要在前端的 javascript 值中访问该值。页面加载后通过 AJAX 很容易获得这个值,但我认为必须发出额外的请求有点愚蠢,因为我确信我应该能够从我的 SiteSettingsService 中获取值(它使用DAO 获取域对象)。
现在,我直接从属性文件获取值:
<fmt:bundle basename="swtc">
<fmt:message key="swtc.authenticationRequired" var="authenticationRequired"/>
</fmt:bundle>
<script type="text/javascript">
window.authenticationRequired = <c:out value="${authenticationRequired}"/>;
</script>
如何修改从我的 service/dao/domain 对象而不是直接从我的属性文件获取值?这是我的 Controller 和服务文件...没什么花哨的:
Controller :
@RequestMapping(value = "/getSiteSettings", method = RequestMethod.GET)
@ResponseBody
public ModelMap getSiteSettings(ModelMap model) {
try {
SiteSettings siteSettings = siteSettingsService.getSiteSettings();
model.addAttribute("siteSettings", siteSettings);
model.addAttribute("success", true);
} catch (Exception ex) {
logger.error("There was an error getting the site settings data. ", ex);
model.addAttribute("exceptionMessage", ex.getLocalizedMessage());
model.addAttribute("success", false);
}
return model;
}
服务:
@Override
public SiteSettings getSiteSettings(){
List<SiteSettings> siteSettings = siteSettingsDao.findAll();
if (siteSettings != null && !siteSettings.isEmpty()){
return siteSettingsDao.findAll().get(0);
}
return null;
}
最佳答案
在负责渲染需要属性的整个 jsp 的 Controller 方法中,您应该能够将 authenticationRequired
属性放在 Model
上,这样它就变成在页面中可用于输出到 Javascript。您需要将 SiteSettingsService
的实例 Autowiring 到该 Controller 中:
@Controller
public class MainPageController { // or whatever it happens to be called
@Autowired
private SiteSettingsService siteSettingsService;
@RequestMapping(value="/mainPage", method=RequestMethod.GET)
public String displayMainPage(Model model) {
SiteSettings siteSettings = siteSettingsService.getSiteSettings();
// Make the property available to the view
model.addAttribute("authenticationRequired", siteSettings.isAuthenticationRequired());
return "mainPage";
}
}
关于java - 从 DAO 获取值以在 JSP 中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21707723/
我是一名优秀的程序员,十分优秀!