我的页面上有这样的按钮
#{if someCondition}
<a href="@{MyPage.index(true)}" class="btn">All requests</a>
#{/if}
#{else}
<a href="@{MyPage.index(false)}" class="btn">Filtered requests</a>
#{/else}
是否可以将其设置为没有任何按钮的复选框?应通过选中复选框来执行操作。换一种说法。如果选中了复选框,我想执行@ {MyPage.index(true)},如果选中@ {MyPage.index(false)}。
我试过了
<input type = "checkbox" onchange = "@{MyPage.index(true)}" value = "withMe" />
但这不起作用。有什么建议么?
最佳答案
呈现页面时,将运行服务器端的模板引擎。服务器将页面返回给用户(客户端)后,您将无法再调用模板引擎。 onchange
是JavaScript触发器,您不能将其与模板命令混合使用。
运作方式如下:
Client Server
------ ------
1
2 -----> 3
4
5
7 <----- 6
8
用户导航到您网站上的URL
浏览器将HTTP请求发送到服务器
服务器接收请求并将其通过路由映射到控制器
控制器执行其技巧并调用视图
视图是使用模板引擎呈现的,并且页面仅包含HTML,CSS(通常将其保留在服务器上呈现的页面之外,但从单独的静态文件中使用),并创建了JavaScript
服务器将HTTP响应中的上一页发送回浏览器
浏览器收到响应
浏览器加载页面
在服务器端,您可以使用Java,模板引擎,来自DB的轮询数据等。在客户端,您可以使用HTML,CSS和JavaScript。
当用户单击页面上的复选框时,就不再有与服务器的连接。因此,为了在单击复选框时调用服务器,您必须提出一个新请求。
如果您需要说单击特定复选框时在页面上显示一些其他内容,则有两个选项:
向服务器同步发出HTTP请求,然后再次加载更多内容的页面。
使用AJAX异步向服务器发出HTTP请求,只需使用JavaScript在页面上添加更多内容即可。
进行第一次调用时,将所有数据加载到页面上,但仅在加载页面时才显示相关位。单击复选框后,使用JavaScript来显示包含其他数据的新内容。
我建议使用2或3,因为1太过老了,对用户来说很烦。