我意识到选择'的价值。元素无法根据“'值”设置。属性,但通过选择'选择'属性'选项'。
我制作了一个简单的if-else模块,比较闪存值,以便选择'属性在右边'选项'。 但它没有工作,总是去其他地方,即使价值'闪存返回的内容是正确的('值'选择'在else块中)。
@if(flash.get("""value""") == "value3"){
<select>
<option value="value1">value1</option>
<option value="value2">value2</option>
<option value="value3" selected>value3</option>
</select>
}
@if(flash.get("""value""").equals("value2")){
<select>
<option value="value1">value1</option>
<option value="value2" selected>value2</option>
<option value="value3">value3</option>
</select>
} else{
<select value="@flash.get("""value""")">
<option value="value1" selected>value1</option>
<option value="value2">value2</option>
<option value="value3">value3</option>
</select>
}
实际上有一种方法可以通过Play Framework闪烁来设置值吗?
修改
所以,我尝试使用自定义助手blesior写的。
@myOwnOptionHelper(optionValue: String, optionLabel: String) = {
<option value = "@optionValue"
@if(flash.get("""flashValue""") != null && flash.get("""flashValue""") == optionValue) { selected = "selected" } >@optionLabel</option>
}
选择元素
<select>
@myOwnOptionHelper("value1", "value1")
@myOwnOptionHelper("value2", "value2")
@myOwnOptionHelper("value3", "value3")
</select>
结果是,闪烁后没有选择任何选项。 我尝试重写if块并显示flashvalue以便进行测试。
@myOwnOptionHelper(optionValue: String, optionLabel: String) = {
<option value = "@optionValue"
@if(flash.get("""flashValue""").isDefined && "value2" == optionValue) { selected = "selected" } >@flash.get("""flashValue""") + @optionLabel</option>
}
它有效。闪烁之后&#34; value2&#34;选择并显示正确的flashValue(例如:&#34; value1 + value2&#34;)。我更改了&#34;!= null&#34; to&#34; .isDefined&#34;用于测试,因为即使没有闪烁发生,也会选择value2。
编辑2
显然flash.get(&#34; flashValue&#34;)是[选项]。这就解释了为什么它没有在第一个地方触发正确的if-else块,因为它返回Some(值)。通过添加一个匹配大小写块,自定义帮助程序可以正常工作。感谢@blesior
@myOwnOptionHelper(optionValue: String, optionLabel: String) = {
<option value = "@optionValue"
@if(flash.get("flashValue").isDefined && (flash.get("flashValue") match {
case Some(x:String) => x
case _ => ""
}) == optionValue) { selected = "selected" } >@optionLabel</option>
}
答案 0 :(得分:0)
相反,您可以为option
标记编写自定义帮助,这将生成它并根据选项的值检查闪烁值,即使在同一视图中也可以执行此操作,尽管如果它是在标签模板(docs)......
@myOwnOptionHelper(optionValue: String, optionLabel: String)={
<option value="@optionValue"
@if(flash.get("myFlashedValue") != null && flash.get("myFlashedValue")==optionValue) { selected="selected"} >@optionLabel</option>
}
<select name="someSelect">
@myOwnOptionHelper("value1", "One")
@myOwnOptionHelper("value2", "Two")
@myOwnOptionHelper("value3", "Three")
@myOwnOptionHelper("value4", "Four")
<!-- ... -->
@myOwnOptionHelper("value1000000", "Million")
</select>
当然帮助者可以获得其他参数,即如果你不想通过flash传递设定值,但是从其他模型中读取它等等。