我正在使用spring mvc框架学习表单处理。但是我在为<form:textarea />
标记提供默认值时遇到问题
当我按如下方式创建.jsp文件时,
<form:textarea path="Content" id="my-text-box" />${content}
jsp解析器将上面的行转换为:(假设${content}
包含“hello world”。)
<textarea id="my-text-box" name="Content"></textarea>third hello world!
此外,提供value
属性不起作用。
<form:textarea value="${content}" path="Content" id="my-text-box" />
jsp给我输出html:
<textarea id="my-text-box" name="Content" value="third hello world!"></textarea>
您知道<textarea>
标记没有value
属性。
如何将默认值传递给<form:textarea>
代码?
提前谢谢。
答案 0 :(得分:3)
Spring表单标签用于数据绑定(例如,您的模型属性通过表单的path
属性绑定到表单)。如果需要指定默认值,请在控制器到达视图之前将Content
的{{1}}属性设置为所需的默认值。
如果你使用Spring MVC和ModelYouArePassingToView
,那么在你的控制器中一个非常好的地方就是你的@ModelAttribute
方法。例如:
@RequestMapping
在表单中,请务必添加@ModelAttribute("modelYouArePassingToView")
public ModelYouArePassingToView createDefault() {
//construct it with default values for "Content"
//attribute, and it will show up in textarea after the bindind
ModelYouArePassingToView myapv = new ModelYouArePassingToView();
myapv.setContent(..); //default value
return myapv;
}
代码属性:
modelAttribute
答案 1 :(得分:2)
也许你可以使用占位符。
<form:textarea
id="id"
class="class"
path="path"
placeholder="test"/>
答案 2 :(得分:1)
我遇到了类似的情况。以下代码:
<form:textarea path="Content" id="my-text-box">${content}</form:textarea>
为我工作。
答案 3 :(得分:0)
您也可以在模型中设置默认文本。你的jsp会有:
<form:textarea path="my-text-box" rows="20" cols="100" cssClass="rounded"/>
然后在模型中,您将拥有:
private static final String DEFAULT_textareacontent = "Hello World";
private String my-text-box = DEFAULT_textareacontent;
不确定这是否是最佳做法,但似乎对我有用。
答案 4 :(得分:0)
这适用于Spring 4,其中form:textarea标记必须为空:
<form:textarea path="content" value="${Object.content}"/>
答案 5 :(得分:0)
您必须将JS与Spring MVC结合使用才能完成此工作。这就是我所做的:
将文本区域更改为基本html,如下所示:
<textarea id="myTextArea" onchange="here();">${content}</textarea>
OR
<textarea id="myTextArea" onchange="here();">third hello world!</textarea>
使用spring mvc添加隐藏的输入字段:
<form:input type="hidden" id="content" path="Content" value="third hello world!"/>
添加以下JavaScript:
<script>
var text1 = document.getElementById('myTextArea').value;
function here() {
text1 = document.getElementById('myTextArea').value;
document.getElementById("content").value = text1;
}
</script>
答案 6 :(得分:0)
您可以使用jquery获取模型属性值并在textarea中设置值
$( function() {
var example = parseInt('${example}');
$("#bot").val(example);
} );