企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
# 动态表单 原文链接 : [http://zeppelin.apache.org/docs/0.7.2/manual/dynamicform.html](http://zeppelin.apache.org/docs/0.7.2/manual/dynamicform.html) 译文链接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030585](http://www.apache.wiki/pages/viewpage.action?pageId=10030585) 贡献者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文网](/display/~apachechina) Apache Zeppelin动态创建输入表单。根据语言后端,创建动态表单有两种不同的方式。自定义语言后端可以选择要使用哪种类型的表单创建。 ## 使用表单模板 此模式使用简单的模板语言创建表单。它简单易用。例如Markdown,Shell,Spark SQL语言后端使用它。 ### 文本输入表单 要创建文本输入表单,请使用`${formName}`模板。 例如 ![](https://img.kancloud.cn/54/26/5426df56b68efe88e12661bd0021a479_502x149.jpg) 也可以提供默认值,使用`${formName=defaultValue}`。 ![](https://img.kancloud.cn/aa/41/aa41fd5f5c25ad8838fa8cedb7454f38_504x149.jpg) ### 选择表单 要创建选择表单,请使用 `${formName=defaultValue,option1|option2...}` 例如 ![](https://img.kancloud.cn/6e/df/6edf888acc3d6840abb83595c7a806c1_566x133.jpg) 此外,您可以使用选项的显示名称和值分隔 `${formName=defaultValue,option1(DisplayName)|option2(DisplayName)...}` ![](https://img.kancloud.cn/3b/2c/3b2ce68dd0589f095a2609694e800933_566x132.jpg) 默认情况下更改选择后,段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ **运行选择更改”**选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它`Enter`。 ![](https://img.kancloud.cn/31/aa/31aa885a816d04d1cadbd0fca969fc90_286x105.jpg) ### 复选框表单 对于多选,您可以使用复选框来创建`${checkbox:formName=defaultValue1|defaultValue2...,option1|option2...}`。该变量将由基于所选项的逗号分隔字符串代替。例如: ![](https://img.kancloud.cn/af/31/af311fda46c8cb73f047f9c8ce8e3441_566x133.jpg) 此外,您可以使用以下命令指定分隔符`${checkbox(delimiter):formName=...}`: ![](https://img.kancloud.cn/3d/81/3d81ad57ff4af3f96081c60e0ab23af9_566x167.jpg) 与[选择表单](http://zeppelin.apache.org/docs/0.7.1/manual/dynamicform.html#select-form)一样,默认情况下更改[选择后](http://zeppelin.apache.org/docs/0.7.1/manual/dynamicform.html#select-form),段落将自动运行。但是,如果您在一个段落中有多种类型的动态表单,则可能需要在更改所有选项后运行该段落。您可以通过取消选中设置菜单中的以下“ **运行选择更改”**选项来控制此选项。即使您取消选中此选项,仍然可以通过按下来运行它`Enter`。 ![](https://img.kancloud.cn/31/aa/31aa885a816d04d1cadbd0fca969fc90_286x105.jpg) ## 以编程方式创建 一些语言后端使用编程方式创建表单。例如[ZeppelinContext](http://zeppelin.apache.org/docs/0.7.1/interpreter/spark.html#zeppelincontext)提供了表单创建API 这里有一些例子。 ### 文本输入表单 **Scala** ``` %spark println("Hello "+z.input("name")) ``` **Python**  展开原码 ``` %pyspark print("Hello "+z.input("name")) ``` ![](https://img.kancloud.cn/e9/41/e9417f12670a9b831fa6da68d0b5437c_481x147.jpg) ### 具有默认值的文本输入表单 **Scala** ``` %spark println("Hello "+z.input("name", "sun")) ``` **Python**  展开原码 ``` %pyspark print("Hello "+z.input("name", "sun")) ``` ![](https://img.kancloud.cn/5d/5e/5d5ef7ec8e65ab403e4f58687dac0404_481x147.jpg) ### 选择表单 **Scala** ``` %spark println("Hello "+z.select("day", Seq(("1","mon"), ("2","tue"), ("3","wed"), ("4","thurs"), ("5","fri"), ("6","sat"), ("7","sun"))))  ``` **Python**  展开原码 ``` %pyspark print("Hello "+z.select("day", [("1","mon"), ("2","tue"), ("3","wed"), ("4","thurs"), ("5","fri"), ("6","sat"), ("7","sun")])) ``` ![](https://img.kancloud.cn/64/d4/64d4cda001aa6d39b49108043e94e53f_479x243.jpg) ### **复选框表单** **Scala** ``` %spark val options = Seq(("apple","Apple"), ("banana","Banana"), ("orange","Orange")) println("Hello "+z.checkbox("fruit", options).mkString(" and "))  ``` **Python**  展开原码 ``` %pyspark options = [("apple","Apple"), ("banana","Banana"), ("orange","Orange")] print("Hello "+ " and ".join(z.checkbox("fruit", options, ["apple"])))  ``` ![](https://img.kancloud.cn/23/91/2391c85c04cda2d9ec782186685de841_566x228.jpg)