我有以下控制器:
final StorageReference filePath = mImageStore.child("profile_images").child("full_image").child(userId + ".jpg");
filePath.getDownloadUrl().addOnSuccessListener(new OnSuccessListener<Uri>() {
@Override
public void onSuccess(Uri uri) {
//Bitmap hochladen
uploadBitMap(uri.toString());
}
});
在我的模板中,我可以这样做:
public class MyErrorController implements ErrorController {
@RequestMapping("/error")
public String handleError(HttpServletRequest request, Model model) {
model.addAttribute("request", request);
}
}
它将给我html的内容:
Method: <span th:text="${request.method}">method</span><br/>
是否有一种简单的方法来知道Thymeleaf中Method: POST
方法具有的所有属性?例如,进行类似request
的操作(用于演示目的)。 HttpServletRequest方法在此处列出,但是我不确定哪些方法可以用作属性,此外,我不确定如何(希望)从模板轻松显示该方法。
答案 0 :(得分:1)
对于当前版本的Thymeleaf(3.0.9),没有特定的实用程序方法可以打印出对象的属性。因此,没有简单的方法。
但是,一种方法是构造自己的方法并使用反射打印它们。我的运行假设当然是Java可用的方法也应Thymeleaf可用。如果不是您要的方法(inspiration),则可以修改此方法。
public static List<Method> toDict(Class aClass) {
List<Method> methods = new ArrayList<>();
do {
Collections.addAll(methods, aClass.getDeclaredMethods()); //using just this would return the declared methods for the class and not any parent classes
aClass = aClass.getSuperclass();
} while (aClass != null);
return methods;
}
然后在您的HTML中调用静态方法:
<div th:each="field : ${T(com.somedomain.util.SomeUtil).toDict(#request.class)}">
<span th:text="${field}" th:remove="tag">[field]</span><br>
</div>
还要注意单元测试和静态方法的常见警告。最后,如果您要访问模型变量,可以查看#vars。
不需要控制器方法。