AEM Fiddleを含むACS AEM Toolsオープンソースプロジェクトを使用することができます。 AEM Fiddleでは、ビルドすることなくスクリプトをAEMインスタンス上で直接実行できます。
AEM Fiddleを使用する場合は、http://localhost:4502/miscadmin#/etc/acs-tools/aem-fiddle
に移動し、右上のプラス記号をクリックして.java
を選択します。このコードを挿入して実行します。クエリのパスを更新してください。
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Iterator;
import javax.jcr.query.Query;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.resource.ModifiableValueMap;
import org.apache.sling.api.resource.Resource;
import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;
public class fiddle extends SlingAllMethodsServlet {
@Override
protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException {
response.setStatus(HttpServletResponse.SC_OK);
PrintWriter out = response.getWriter();
ResourceResolver resolver = null;
out.println("starting...");
try {
resolver = request.getResourceResolver();
if (resolver != null) {
Iterator<Resource> resources = resolver.findResources("/jcr:root/content/mysite//*[@sling:resourceType='app/component/linkButton']", Query.XPATH);
while (resources.hasNext()) {
Resource resource = resources.next();
ModifiableValueMap properties = resource.adaptTo(ModifiableValueMap.class);
properties.put("sling:resourceType", "app/component/linkButton1");
resolver.commit();
out.println(resource.getPath());
}
}
} catch(Exception e) {
response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
e.printStackTrace(out);
} finally {
if (resolver != null && resolver.isLive()) {
resolver.close();
resolver = null;
}
}
out.println("...finished");
}
}
あなたが述べてきたように、あなたがむしろJSPを使用したい場合は、コードが同じである:目的のため
<%@include file="/libs/foundation/global.jsp"%><%
%><%@page session="false" contentType="text/html; charset=utf-8"
pageEncoding="UTF-8"
import="org.apache.sling.api.resource.*,
java.util.*,
javax.jcr.*,
com.day.cq.search.*,
com.day.cq.wcm.api.*,
com.day.cq.dam.api.*,
javax.jcr.query.Query,
org.apache.sling.api.resource.ModifiableValueMap"%><%
Iterator<Resource> resources = resourceResolver.findResources("/jcr:root/content/mysite//*[@sling:resourceType='app/component/linkButton']", Query.XPATH);
while (resources.hasNext()) {
Resource current = resources.next();
ModifiableValueMap props = current.adaptTo(ModifiableValueMap.class);
props.put("sling:resourceType", "app/component/linkButton1");
resourceResolver.commit();
%>
<%=current.getPath()%>
<%
}
%>
を置き換えるために見つけるかのsedコマンドを使用している場合、私はフィドルのコードを実行し、あなたの迅速な対応をありがとうございました。しかし、私はこのエラーが発生しています。 /apps/acs-tools/components/aemfiddle/fiddle/fiddle.javaのコンパイルエラー:行1、列0:宣言されたパッケージ ""が予想されるパッケージ "apps.acs_002dtools.components.aemfiddle.fiddle"と一致しません このサーバーの/etc/acs-tools/aem-fiddle/_jcr_content.run.htmlへのリクエストを処理できません。 ApacheSling/2.4(jetty/9.2.9.v20150224、Java HotSpot(TM)64ビットサーバーVM 1.8.0_66 、Mac OS X 10.11.4 x86_64) –
JSPで同様のコードを実行できますか?私はこれを初めてやっています。 –
AEM Fiddleが書き込む最初の行を終了してください。これは次のようになります: 'package apps.acs_002dtools.components.aemfiddle.fiddle;' – nateyolles