- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要一些有关liferay 和ajax 的帮助。现在,我正在从 view.jsp
页面调用 ajax 方法来提交一些数据。
这是我在 view.jsp
中使用的示例代码:
<%@ include file="/init.jsp"%>
<portlet:actionURL name="AddTest" var="add1" />
<portlet:resourceURL id="AddTest" var="AddTest"></portlet:resourceURL>
<html>
<head>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
<script type="text/javascript">
function addToDo(addToDo){
var todo =document.getElementById('toDo').value;
$.ajax({
url :addToDo,
data: {"todo":todo,"CMD":"addToDo"},
type: "GET",
dataType: "text",
success: function(data) {
$("#toDoList").html(data);
}
});
}
</script>
</head>
<body>
<portlet:resourceURL var="addToDo" id="addToDo"></portlet:resourceURL>
<form>
<input type="text" name="toDo" id="toDo">
<button name="Add" type="button" onclick="addToDo('<%=addToDo%>')">Add</button>
<div id="toDoList">
</div>
</form>
</body>
</html>
在我的portlet.java
类中,有一个方法被这个ajax调用调用:
@Override
public void serveResource(ResourceRequest request, ResourceResponse response){
if(request.getParameter("CMD").equals("addToDo")) {
System.out.println("came here for add");
mediatype userToDo = new mediatypeImpl();
//userToDo.setMediaId(12345);
try {
userToDo.setPrimaryKey((CounterLocalServiceUtil.increment()));
userToDo.setMedianame(request.getParameter("todo"));
mediatypeLocalServiceUtil.addmediatype(userToDo);
}
catch (SystemException e) {
e.printStackTrace();
}
}
}
所以我的问题是,现在它只是默认从任何 ajax 类调用 @override
方法。但是如何在 ajax 调用中调用 portlet.java
类的特定方法呢?
我是 ajax 的新手。所以无论如何请指导我......
使用以下 url 调用 ajax 时出现以下错误
<portlet:actionURL name="ajax_AddAdvertise" var="addToDo" windowState="<%= LiferayWindowState.EXCLUSIVE.toString()%>"> </portlet:actionURL>
06:47:03,705 ERROR [http-bio-8080-exec-23][render_portlet_jsp:154] java.lang.NoSuchMethodException: emenu.advertise.portlet.RestaurantPortlet.ajax_AddAdvertise(javax.portlet.ActionRequest, javax.portlet.ActionResponse)
at java.lang.Class.getMethod(Class.java:1605)
我的流程操作方法如下
@ProcessAction(name = "ajax_AddAdvertise")
public void ajax_AddAdvertise(ResourceRequest request,ResourceResponse response) {
}
最佳答案
how can I call specific method of portlet.java class on ajax call?
我认为我们不能有 serveResource
的两个不同版本像我们对操作方法所做的那样的方法至少不是默认实现。
如果你想要不同的方法,你必须去 Spring MVC ( @ResourceMapping
)拥有这样的方式。
不过,您可以在 serveResource
中定义不同的逻辑。使用 resourceId
的方法如下(a full example):
在 JSP 中:
<portlet:resourceURL var="myResourceURL" id="myResourceID01" />
在 portlet 类中 serveResource
方法将包含以下代码:
String resourceID = request.getResourceID();
if(resoureID.equals("myResourceID01")) {
// do myResourceID01 specific logic
} else {
// else do whatever you want
}
请牢记[重要]
在 portlet 中,您不应使用 <html>
, <head>
, <body>
标签,因为 portlet 生成页面片段而不是整个页面。即使允许,您生成的页面也不会格式良好,并且在不同浏览器上的行为会有所不同。而且修改 DOM 元素的 javascript 将完全无用。
在 this comment 之后编辑:
您还可以将 ajax 与操作方法一起使用:
人们使用<portlet:actionURL>
使用ajax通常为<form>
-POST
.
为此 actionURL
在您的 jsp 中以稍微不同的方式生成,如下所示:
<portlet:actionURL name="ajax_AddAdvertise" var="addToDo" windowState="<%= LiferayWindowState.EXCLUSIVE.toString()%>">
</portlet:actionURL>
在您的 portlet 中您可以拥有(如问题中所示):
@ProcessAction(name = "ajax_AddAdvertise")
public void ajax_AddAdvertise(ActionRequest request, ActionResponse response) {
// ... your code
}
关于ajax - 如何调用portlet.java类的特定方法而不是重写serveResource方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246870/
在今天的一次采访中,我提到我在 portlet 中做了一些 jsf 工作。面试官询问 portlet-bridge 的具体功能。我从来没有研究过它,只是使用它,因为我被告知它会使 jsf 在 port
我是 Portlet 应用程序开发的新手,我对 PortletContext 对象有一个疑问。如果在单个 Portlet 应用程序中配置了多个 Portlet,则每个 PortletApllicati
我正在尝试修复分配给自定义 portlet 管理器的日历 portlet 的月份导航。这个管理器是从一个特定的浏览器页面模板调用的: 不幸的是,经理没有为我呈现带有散列的包装器,因此我尝试手动将 k
使用 documentation在 plone.org 和论坛中的一些网站上,我能够在 Plone 4.0.8 中的内容下方获得一个自定义 portlet 管理器。实际上,目标是让 4 个自定义管理器
是否可以在一个 portlet 中创建几个 portlet?我的意思是多级 portlet。 最佳答案 是的。您可以使用 Nested Portlet为此目的。这是其他 portlet 的布局容器。您
当我在 tomcat 服务器上的 liferay 6.0.6 中一个接一个地部署两个 portlet 时,第二个部署的 portlet 正在取消部署第一个部署的 portlet,反之亦然: 堆栈跟踪:
我正在使用 Spring MVC Portlet 开发一个 portlet 并部署在 Liferay 中。我对这个 portlet 的意图是显示一个包含一些重要信息的树。为了实现这个目标,我需要请求服
所以我用谷歌搜索了一整天,得到的答案很少,但他们都失败了。更不用说所有的解决方案都 > 3 岁了。我正在使用 LR 6.1 CE。将不胜感激简单的工作示例,因为其他答案总是让我获得空值。 最佳答案 有
我正在使用portlet function of JQuery UI创建一个基本的门户页面。 JQuery UI 页面上的示例显示了一个非常简单的示例,其中包含 3 列和适合这些列的固定大小的 por
对于由 Liferay EE 6.0 SP1 提供支持的网站,有时某些页面需要“共享”某些 portlet 的同一实例,但其他页面将拥有自己的实例。 例如(人为设计,但希望能够说明问题),考虑一个带有
我是 Liferay portlet 的新手。谁能告诉我如何根据另一个 portlet 的事件显示或隐藏一个 portlet。我只想在ice:spaces 中编码,而不是任何其他方式。如果有人知道这个
父 portlet 有一个表单,我填写但尚未提交。 然后,我从这个父 portlet 中单击一个链接来打开一个弹出 portlet,在弹出窗口中填写表单并提交值。 该值现在应该在父 portlet 中
我有一个页面,其中包含一个 portlet(portlet A)和一个用于打开弹出窗口的按钮。 Liferay.Util.openWindow(..) 在弹出窗口中,我有另一个 portlet(por
我的问题是如何从一个 portlet 转到另一个。 我的场景是这样的: 用户可以查看特定 portlet 的 view.jsp。当他单击按钮时,页面将显示另一个 portlet 的 view.jsp。
例如,我有三个 portlet:portletA、portletB 和 portletC。 portletA 显示在左侧,它有两个链接 linkB 和 linkC。 如果我点击 linkB 然后 po
为什么我要在 tomcat 和 gwt 之上使用 java portlet?portlet 是否会减少或不需要我使用 jsp 和 jsf?Jboss 是否已成为 portlet 进化文化的一部分? J
我需要自定义哪个 portlet 出现在“添加更多 portlet 菜单”中,如下图所示: 我需要根据登录的用户或站点(社区)限制此菜单中显示的 portlet 数量。这样,站点所有者或站点管理员将能
我如何重新排序 portlet,以便继承的父 portlet 排在当前项的 portlet 之前? 最佳答案 Mathias 的解决方案似乎更简单;无论如何,如果您不想安装第三方产品,我想保留此文档。
在 Plone 4.1 中禁用站点范围内的 portlet 类型的最佳方法是什么?默认设置提供约 10 个 portlet 类型,但站点用户仅拥有少数几种用例(静态文本、新闻)。 最佳答案 Portl
我正在将最基本的 Portlet 部署到 Liferay: public class FirstPortlet extends GenericPortlet { @RenderMode(nam
我是一名优秀的程序员,十分优秀!