angularjs与<portlet:renderurl>和spring mvc portlet

时间:2015-08-11 10:44:02

标签: angularjs spring portlet

我的表有这个代码:

##
<tr ng-repeat="elt in tabDemandes">
  <td>{{elt.id}}</td>
  <td>{{elt.name}}</td>

  <portlet:renderURL var="maj">
    <portlet:param name="action" value="maj"/>
    <portlet:param name="idD" value="elt.id"/>
 </portlet:renderURL> 
</tr>
##

我想在我的控制器中恢复我的参数“idD”的值,但是它将elt.id作为参数的值并且他给了我错误

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:0)

要访问控制器中的idD,只需设置一个可以容纳它的$ scope。 Angularjs在构建时考虑了双向数据绑定,因此实际上,您可以在视图中对控制器进行更改,并将控制器中的更改推送到视图中。

在您的情况下,只需确保将idD存储为ng-modle,该ng-modle链接回您在控制器中声明的范围。正确链接后,您可以在控制器中获取idD没问题。

答案 1 :(得分:0)

显然,区别在于JSTL taglib(<portlet:renderUR>L)在服务器上运行,而AngularJS和ng-repeat在客户端上运行。目前AngularJS正在循环您的内容,URL已经被渲染。

有关服务器端和客户端差异的详细信息,请查看以下答案:What is the difference between client-side and server-side programming?

我们所做的很简单,我们将网址附加到我们的模型中(在您的情况下为tabDemandes)。这是我们用于创建以ID作为参数的操作URL的示例:

PortletURL detailURL = response.createActionURL();
detailURL.setParameter(ActionRequest.ACTION_NAME, "detailTask");
detailURL.setParameter("id", Long.toString(task.getId());
task.setDetailURL(detailURL.toString());

在这种情况下,我们使用了一个任务列表,我们使用此操作URL打开任务的详细页面,因此我们必须将ID传递给操作URL。我们使用Java API代替使用JSTL标记库。

在您的情况下,您可能需要使用response.createRenderURL()