gpt4 book ai didi

java - 从 DAO 获取值以在 JSP 中使用

转载 作者:行者123 更新时间:2023-12-01 13:27:57 26 4
gpt4 key购买 nike

我认为这很容易做到,但我在 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com