我的页面上有这样的按钮

 #{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太过老了,对用户来说很烦。

09-30 14:38
查看更多