Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 路径硬编码及如何避免?_Spring_Thymeleaf - Fatal编程技术网

Spring 路径硬编码及如何避免?

Spring 路径硬编码及如何避免?,spring,thymeleaf,Spring,Thymeleaf,spring boot starter父级2.3.5.1版本 我正在学习一门视频课程。它用的是百里香。讲师已硬编码了路径的一部分 <a hredf="#" th:href="@{/recipe/show} + ${recipe.id}}">View</a> 你能告诉我这样的硬编码可以吗?为什么他们不把这个路径放在一个变量上,而不把它传递给上下文 有没有办法不硬编码路径?这种链接通常是不可变的。 喜欢显示收据id。 硬编码也不是

spring boot starter父级2.3.5.1版本

我正在学习一门视频课程。它用的是百里香。讲师已硬编码了路径的一部分

<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>