我有一个给<form:textarea />
标签默认值的问题。
当我创建如下JSP文件时:
<form:textarea path="Content" id="my-text-box" />${content}
JSP解析器将上面的行翻译为:
<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>
标签?
Spring表单标签用于数据绑定(例如,您的模型属性通过表单的path
属性绑定到表单)。如果需要指定默认值,那么在ModelYouArePassingToView
到达视图之前,将控制器中的Content
属性设置为所需的默认值。
如果你使用Spring MVC和@RequestMapping
,一个很好的地方在你的控制器将是你的@ModelAttribute
方法。例如:
@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
标签属性:
<form:form modelAttribute="modelYouArePassingToView" ...>
<form:textarea path="content" ..>
我也遇到过类似的情况。下面的代码:
<form:textarea path="Content" id="my-text-box">${content}</form:textarea>
这适用于Spring 4,其中form:textarea标签必须为空:
<form:textarea path="content" value="${Object.content}"/>
您必须使用JS以及Spring MVC来完成此工作。我是这样做的:
-
将textarea改为basic 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>
也许你可以使用占位符。
<form:textarea
id="id"
class="class"
path="path"
placeholder="test"/>
您也可以在模型中设置默认文本。您的jsp将包含:
<form:textarea path="my-text-box" rows="20" cols="100" cssClass="rounded"/>
然后在Model中,你会有:
private static final String DEFAULT_textareacontent = "Hello World";
private String my-text-box = DEFAULT_textareacontent;
不确定这是否是最佳实践,但它似乎对我有效。
您可以使用jquery获取模型属性值并在textarea
中设置该值 $( function() {
var example = parseInt('${example}');
$("#bot").val(example);
} );