Spring 路径硬编码及如何避免?
spring boot starter父级2.3.5.1版本 我正在学习一门视频课程。它用的是百里香。讲师已硬编码了路径的一部分Spring 路径硬编码及如何避免?,spring,thymeleaf,Spring,Thymeleaf,spring boot starter父级2.3.5.1版本 我正在学习一门视频课程。它用的是百里香。讲师已硬编码了路径的一部分 <a hredf="#" th:href="@{/recipe/show} + ${recipe.id}}">View</a> 你能告诉我这样的硬编码可以吗?为什么他们不把这个路径放在一个变量上,而不把它传递给上下文 有没有办法不硬编码路径?这种链接通常是不可变的。 喜欢显示收据id。 硬编码也不是
<a hredf="#" th:href="@{/recipe/show} + ${recipe.id}}">View</a>
你能告诉我这样的硬编码可以吗?为什么他们不把这个路径放在一个变量上,而不把它传递给上下文
有没有办法不硬编码路径?这种链接通常是不可变的。 喜欢显示收据id。 硬编码也不是问题 但是,如果您的路径可以更改,您可以使用一个变量进行更改,就像您所做的那样:
${recipe.id}
若在路径中有另一个变量部分,那个么也可以对它们使用变量
<a hredf="#" th:href="@{/recipe/} + ${actionName} + ${recipe.id}">View</a>
在Spring(JSF)中有一种非硬编码方式,即使用ControllerName和Action Name作为路由名称,如下所示:
<h:commandButton action = "#{receiptController.show}" />
或:
根据:
thymeleaf尚未实现此功能
您只能将变量传递给它
因此,您可以拥有一个静态类的常量url映射。有很多这样的链接。我应该组织一个特殊的类来为整个项目保留这样的url常量吗?通常你不需要这样的东西。在一些像php laravel这样的框架中,有一个名为route name的结构,你可以为每个路径(route)指定一个名称并使用这些名称。路由名称和实际路径之间的关系存储在一个文件中。但大多数情况下。路径是不可变的,即使您想在代码中更改它们,您也可以使用编辑器的“查找和替换”功能来实现这一点,但在URI中使用可变部分的部分。你必须使用变量。比如一个实体id(receipt.id)或者一个搜索词。是的,我需要像命名路由名称这样的东西。为什么你认为URL是不可变的?它们可能是完全可变的。如果一个项目经理告诉您,现在规范改变了,URL也将不同,那么它就会改变。即使没有,我也不喜欢硬编码和重复。为什么要在控制器和模板中重复相同的路径?我一点也不喜欢。而寻找和替换的想法并没有那么吸引人。
<h:commandLink action = "#{receiptController.show}" value = "link text">
<f:param name = "receiptId" value = "${receipt.id}" />
</h:commandLink>