用Java硬编码@PathVariable

时间:2018-07-27 10:08:56

标签: java spring spring-boot model-view-controller path-variables

我对Java还是陌生的,但我仍然想围绕它的许多概念来思考。

现在在我的应用程序中,该应用程序从外部api提取数据。我目前正在尝试对路径进行硬编码,以确保得到期望的响应(这是一个临时交互,最终,我希望应用程序是无状态的。如果我在@PathVariable中传递硬编码值在代码上方定义的变量中,我的控制器无法读取该值。

我应该在哪里放置硬编码的值,我是否以正确的方式定义它?

代码:

String identificationCode ="abcd";
@RequestMapping(value ="/download/{identificationCode}", method = RequestMethod.GET)
String downloadDocument(@PathVariable(value="identificationCode") String identificationCode) {
     .
     .
     .
}

3 个答案:

答案 0 :(得分:0)

value是名称的别名。这意味着@PathVariable(value="identificationCode")指定此参数的变量名称,但不指定值。 See

答案 1 :(得分:0)

这里"/download/{identificationCode}"

identificationCode不会被在那里声明的String值插值:

String identificationCode ="abcd";

它将仅生成字符串:"/download/{identificationCode}"

您可以编写:

@RequestMapping(value ="/download/"+identificationCode, method = RequestMethod.GET)

,但它也不起作用,因为identificationCode不是常数表达式。

所以您想要的只是:

@RequestMapping(value ="/download/abc", method = RequestMethod.GET)

如果您不需要在其他地方引用String,请使用这种方式。

否则,可以将identificationCode声明为常量表达式(并且您也可以通过static来声明):

final static String identificationCode ="abcd";

您可以这样使用它:

@RequestMapping(value ="/download/"+identificationCode, method = RequestMethod.GET)

答案 2 :(得分:0)

将{identificationCode}替换为@RequestMapping(value =“ / download / {identificationCode}”)中的硬代码值。稍后,当您需要路径的动态性质时,可以按照当前编码的方式进行操作。