2016-03-03 79 views
0

我想使用helper.repeat来创建几个输入元素。但我想将输入标签声明为html而不是使用@ helper.input方法。但要做到这一点,我不得不在这个循环内使用@index。我无法实例化并增加此变量。我尝试了类似下面的代码,但我的输出显示在html页面中: BaseScalaTemplate([email protected])= {0} 以html格式输出。声明变量在@ helper.repeat中使用 - PlayFramework

 <div class="form-group"> 
      <div class="col-sm-offset-2 col-sm-10"> 

       @index = {0} 
      @helper.repeat(questionForm("answer.alternatives"), min = 7) { (alternative) => 
       <div class="checkbox"> 

        <input type="checkbox" value="@alternative("correct") "> 
        <input type="text" id="answer_alternatives_(@index)_text" name="answer.alternatives[@index].text" value=""> 
       </div> 
      } 
      </div> 
     </div> 

是否有另一种可能更干净的方式来做我想要的?也许用@for?

我用Java8的playframework 2.4.6。

回答

1

Playframework会让你做你需要的,但你必须以另一种方式做。

1)您的表单定义将有一个Seq[String]来保存来自该模板的结果。

2)您的表单定义将需要包含此更改。你的情况:

"answer_alternatives" -> seq(nonEmptyText) 

3)从模板更改姓名和身份证到@{alternative.name}这样Playframework可以将输入的文本链接字符串的序列。

<input type="text" id="@{alternative.name}" name="@{alternative.name}" value=""> 
+0

我是新玩家框架。如果没有更自然的做法,我认为这不是通常所做的那种事情?这种映射通常如何实现?我应该创建一种TransferObject来保存视图输入吗?或者可以使用DynamicForm并从视图中分离模型,直到它到达Controller层? – alexpfx

+0

由于这是另一个问题(需要很长时间的回复),我会创建另一个问题,通过一个例子确切地询问您需要什么。 –

+0

2天前我问了另一个相关的问题:http://stackoverflow.com/q/35664642/4785114我想要的是或多或少的,但我想在没有@helper类的窗体中使用纯html – alexpfx