我有一张表格列出了有关People
的信息。当用户点击记录时,我想导航到另一个视图屏幕并显示有关所选记录的详细信息。
代码如下:
<td><g:link controller="People" action="showListPeople" id="${peopleInstance.id}">${fieldValue(bean: peopleInstance, field: "personName")}</g:link></td>
1。)当我点击上面的hyperlink
时,页面会导航到新视图。但是,如何在新视图中显示用户选择的行的详细信息?
2。)我想阻止用户通过键入或任何其他方式直接访问视图localhost:9900/proj/person/showListPeople
,只有当用户从列表视图中选择记录时才应始终显示。我怎么能这样做?
答案 0 :(得分:2)
使用params。像下面这样的东西
<g:link controller="People" action="showListPeople" id="${peopleInstance.id}" params="[foo: 'bar', bar: 'foo']"> My Link </g:link>
对于第二个问题,我认为没有Grails方法可以做到这一点。您需要为此创建一些令牌策略。在创建链接时传递令牌,并在用户来自该链接时检查令牌...如果他来自不同的方式,令牌将不在那里....你可以保存令牌是内存(在会话中)或在DB中(它会受到性能影响)。
答案 1 :(得分:0)
添加Umair关于第一个问题的解释:
在列表视图中,您可以生成链接到列表中显示的人员名称(或者为此目的在每行中放置一个单独的按钮)。您以包含人员ID作为参数的方式生成链接(请参阅Umair的示例链接)。
您的详细控制器将获取此请求参数并加载相关人员实体并将其提供给详细视图(在其模型中),该视图将显示详细信息。