私が達成したいのは、CQ 5 モバイル アプリケーション開発の初心者です。モバイル デバイスがページにリクエストを送信すると、モバイル ブラウザ、モバイル ブラウザのバージョン、モバイル OS、モバイル OS バージョンなどのモバイルの属性がキャプチャされます。この情報をログに記録し、後の段階でこれを使用して、異なるデバイス グループに分類し、異なるデバイス グループの異なるコンポーネントをレンダリングします。
注: これらのリンクのいくつかは既に 確認済みです CQ5 Mobile Development Docs
http://www.cognifide.com/blogs/cq/adobe-cq-5-5-mobile-improvements/ http://wurfl.sourceforge.net/help_doc.php
デバイスにnull値があるため、Null Pointer Exceptionをスローするこのコードを試しました。どこかで間違っている場合は修正してください
SlingHttpServletRequest slingRequest = this.request.getSlingRequest();
Device device = slingRequest.adaptTo(Device.class);
Map<String, String> deviceAttributes = device.getAttributes();
LOG.info("Request is sent from Device with OS"+deviceAttributes.get("device_os"));
このコードをテストする方法は次のとおりです。エミュレーターの1つからモバイルデバイスの属性をログに記録するこのコンポーネントを持つページにリクエストが送信されるたびに、ログファイルを確認します
モバイル デバイスの属性を取得するためのコードまたはメソッドに問題がある場合は、助けてください。これについてさらに詳細が必要な場合はお知らせください。
よろしく、 ヤシュ
こんにちは、これのスタック トレースは次のとおりです。
Caused by: org.apache.sling.api.SlingException: An exception occurred processing JSP page /apps/companyname/components/content/mobilebreadcrum/mobilebreadcrum.jsp at line 5
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.handleJspExceptionInternal(JspServletWrapper.java:571)
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:496)
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:448)
at org.apache.sling.scripting.jsp.JspServletWrapperAdapter.service(JspServletWrapperAdapter.java:59)
at org.apache.sling.scripting.jsp.JspScriptEngineFactory.callJsp(JspScriptEngineFactory.java:173)
at org.apache.sling.scripting.jsp.JspScriptEngineFactory.access$100(JspScriptEngineFactory.java:84)
at org.apache.sling.scripting.jsp.JspScriptEngineFactory$JspScriptEngine.eval(JspScriptEngineFactory.java:388)
at org.apache.sling.scripting.core.impl.DefaultSlingScript.call(DefaultSlingScript.java:358)
... 147 more Caused by: javax.el.ELException: Error reading 'modelName' on type com.companyname.www.components.content.mobilebreadcrumb.MobileBreadCrum
at javax.el.BeanELResolver.getValue(BeanELResolver.java:66)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53)
at org.apache.el.parser.AstValue.getValue(AstValue.java:97)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
at org.apache.sling.scripting.jsp.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:923)
at org.apache.jsp.apps.companyname.components.content.mobilebreadcrum.mobilebreadcrum_jsp._jspService(mobilebreadcrum_jsp.java:160)
at org.apache.sling.scripting.jsp.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
at org.apache.sling.scripting.jsp.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
... 152 more Caused by: java.lang.NullPointerException
at com.companyname.www.components.content.mobilebreadcrumb.MobileBreadCrum.getModelName(MobileBreadCrum.java:35)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:62)
... 160 more
JSP コードは次のとおりです。
<%@include file="/apps/companyname/components/global.jsp"%><ct:component
className="com.companyname.www.components.content.mobilebreadcrumb.MobileBreadCrum"
name="mobilebreadcrum" />${mobilebreadcrum.modelName}
Java コードは次のとおりです。
public String getModelName() {
SlingHttpServletRequest slingRequest = this.request.getSlingRequest();
String resourceType = slingRequest.getResource().getResourceType();
String resourceSuperType = slingRequest.getResource().getResourceSuperType();
LOG.info("RESOURCE TYPE:"+resourceType);
LOG.info("RESOURCE SUPER TYPE:"+resourceSuperType);
Device device = request.getCurrentPage().adaptTo(Device.class);
device.getAttributes();
return modelName;
}
他に欲しいものがあれば教えてください
よろしく、 ヤシュ