java - 在 freemarker 模板中获取 contextPath 来链接其他 servlet

标签 java servlets hyperlink freemarker

欢迎。我正在创建 Web 应用程序,堆栈:servlet,freemarker 作为 View 层。我正在尝试按照 MVC 模式来做到这一点。我想在我的所有页面中包含公共(public)页面片段菜单,其中包含指向其他服务/页面的超链接。所有页面均包含一个菜单。 我必须补充一点,我的一些 servlet 已映射到其他子目录示例中:
用户/编辑个人资料
管理/统计
管理/权限
索引
最后消息

就像我之前说过的,我想制作一个包含在其他页面中的通用菜单页面。当 hiperlinks 在由映射在“索引”的 servlet 渲染的模板中工作正常但已经来自管理/统计时,没有。我想我可以使用 contextPath 创建到其他网站的路径,但我不能在 freemarker 中执行此操作;/

最佳答案

您绝对可以在 FreeMarker 中做到这一点,但不要这么做。当然,FreeMarker 不包含这样的现成功能。与 JSP 的根本区别在于 FreeMarker 不规定任何内容(甚至不规定您将其与 Servlet-s 一起使用),因此框架作者可以完全控制模板作者将看到的内容和方式。如果您想公开此类功能,请通过数据模型或共享变量(请参阅 Configuration.setSharedVariable)或通过 #import-ed FTL 来实现调用框架的 Java API(Spring 就是这么做的)。从模板作者的角度来看,通常有一个变量包含所有 Web 框架功能,比如说 fw,然后你可以执行类似 ${fw.url('admin/stats')},框架会将其扩展为绝对 URL。请注意,在示例中,模板作者不必处理高技术细节,例如插入 servlet 上下文 URL。此外,通过这种方式,目标可以只是某个操作标识符,然后您可以拥有另一层配置,将 URL 映射到操作(例如,这种灵 active 对于 SEO 很有用),这也意味着您可以自动发现损坏的链接。

关于java - 在 freemarker 模板中获取 contextPath 来链接其他 servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18727707/

相关文章:

java - 使用 ksop2 如何将大文件发送到 web 服务

java - 数组边界检查可以静态执行吗?

java - 严重 : Allocate exception for servlet <myservlet-name> java. lang.ClassNotFoundException:<myservlet> 异常

java - URL 中的 % 重定向到 HTTP ERROR 400 而不是默认错误页面

python - Outlook 超链接的格式是什么?

java - 我如何将 bytearray 存储为 HashMap 中的值?

java - 由于未绑定(bind)的 RestTemplate,Spring-Boot RestClientTest 无法正确自动配置 MockRestServiceServer

java - Servlet 性能 : Generate Static Content Dynamically?

jquery - 单击链接即可更改 SRC。我做错了什么?

html - 如何链接到同一目录中的文档部分(pandoc markdown->html 输出)