java - 如何访问百里香模板中的java对象方法返回值
问题描述
试图在 thymeleaf 模板中获取方法的返回值,但遇到了问题。以下是环境
控制器类:
@Component
@Controller
public class HighController {
@GetMapping("/abcdata")
public String customerForm(Model model) throws IOException, InterruptedException {
model.addAttribute("abcdata", new CostDataModel());
return "abcdata";
}
}
getter 和 setter
import java.util.List;
import org.springframework.stereotype.Component;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Setter
@Getter
@NoArgsConstructor
@Component
public class CostDataModel {
public SubList abcdata;
}
主班
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
@ComponentScan
@SpringBootApplication
public class AbcmanagementApplication {
public static void main(String[] args) {
SpringApplication.run(CostmanagementApplication.class, args);
}
}
thymeleaf 模板视图(abcdata.html)
<div class="starter-template">
<form action="#" th:action="@{/abcdata}" th:object="${abcdata}" method="post">
<div class="form-group">
<label for="subs">Choose subs</label>
<select class="form-control selectpicker" th:field="*{abcdata}" id="abcdata">
<option value="">Nothing selected</option>
<option th:each="abcdata : ${abcdata}"
th:value="${abcdata.abcdata}"
th:text="${abcdata}">abcdata
</option>
</select>
</div>
<button class="btn btn-primary" type="submit">Submit form</button>
</form>
</div>
子列表类
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Component
public class SubList {
@Autowired
private RequestToken rt;
public List<String> getSub() throws IOException, InterruptedException
{
// some code here
return list;
}
}
我需要访问getSub()
thymeleaf 模板中的方法返回的整个列表。但它不是列表,而是返回整个对象。在 thymeleaf 中,我使用下拉字段来填充整个列表,但存在一些问题。
解决方案
- 首先
@Component
从您放入模型中的对象中移除(soCostDataModel
和SubList
)。这个注解意味着你希望 Spring 容器创建单个实例,但这不是你想要的。 @Component
从中删除HighController
。您已经拥有@Controller
足以让 Spring 将类作为具有组件扫描的单例来拾取。RequestToken
里面有什么用SubList
?由于SubList
不再是 Spring 单例,因此自动装配将不起作用。如果您真的需要它,可以通过构造函数手动传递它。- 使用
th:object="${abcdata}"
,您选择CostDataModel
Thymeleaf 中的实例。当您th:field="*{abcdata}"
在 中执行时<select>
,这意味着 Thymeleaf 将调用getAbcData()
selected 上的方法,该方法CostDataModel
返回SubList
实例。这不是你想要的,你应该使用简单String
的字段。很难猜测您的问题的确切解决方案是什么,也许您可以使用一些比其他abcdata
地方更好的名称来更好地理解您的问题。无论如何,您可能想在我的博客上阅读有关在 Thymeleaf 中使用 HTML 选择选项的信息,以了解有关此内容的更多信息,然后如果仍然无法正常工作,则可能会更新您的问题。
推荐阅读
- graphql - 如何使用所需的两个参数之一在模式中定义 graphql 查询
- django - 在 django 模型中的表之间链接外键
- python - 有没有办法将 int 或字符串分配给在我的字典中未分配为键的特定值?
- html - Web 用户控制 Asp.net
- javascript - 无法从前端获取值……“document.querySelector('#text').value;” 不工作
- react-native - 最后一个字符中的不同样式以显示必填字段
- sql - 根据添加日期过滤掉 SQL Server 表中的行
- javascript - Action createPage 在其预期的异步生命周期 Gatsby 之外被调用
- amazon-web-services - 在没有 GUI 的情况下运行 Selenium 测试
- r - R Shiny - 具有独立行的 echarts 热图