2016-08-15 2 views
0

код сервлета выглядит, как показано нижеОтправить форму Servlet AEM

@SlingServlet(
     methods = {"POST"}, 
     resourceTypes = {"cq:Page"}, 
     extensions = {"html"}) 
public class AssetDownloadServlet extends SlingAllMethodsServlet { 

    private static final Logger log = LoggerFactory.getLogger(AssetDownloadServlet.class); 


    @Override 
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException 
    { 
     log.info("%%%%%%%%%%%%%%$$$$$$$$$$$%%%%%%%**************: "+ "doPost"); 
     processRequest(request,response); 
    } 

    @Override 
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException 
    { 
     log.info("%%%%%%%%%%%%%%$$$$$$$$$$$%%%%%%%**************: "+ "doGet"); 
     processRequest(request,response); 
    } 

    private void processRequest(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException{ 
     log.info("%%%%%%%%%%%%%%$$$$$$$$$$$%%%%%%%*******************"); 
     log.info(request.getParameter("format")); 
     log.info("%%%%%%%%%%%%%%$$$$$$$$$$$%%%%%%%*******************"); 
    } 
} 

форма в HTML-страницы выглядит, как показано ниже

<form method="POST"> 
    <fieldset> 
    <p>Format needed?</p> 
    <ul style="list-style-type:none" data-sly-list.rendition="${renditions}"> 
     <!--${rendition.path}--> 
     <li> 
     <label> 
      <input type="radio" name="format" value="${rendition.name}" /> 
      <span>${rendition.displayName}</span> 
     </label> 
     </li> 
    </ul> 
    </fieldset> 
    <fieldset> 
    <button type="submit">Start Download</button> 
    <a>Cancel Download</a> 
    </fieldset> 
</form> 

CQ Подробности на странице

<!--cq{"decorated":false,"type":"myProject/components/page/generic","path":"/content/myProject/en/assetdetail/jcr:content","selectors":"IRNHUF7D","servlet":"Script /libs/foundation/components/page/page.jsp","totalTime":28,"selfTime":8}--> 

Резюме:

У меня есть ресурс cq: page, с формой и сервлетом, связанными с ним. Но при отправке формы сервлет не запускается. Я вижу, что свойства установлены правильно в http://localhost:4502/system/console/.

Пожалуйста, предложите ..

Благодаря

ответ

0

cq:Page не ResourceType, его NODETYPE. Вам необходимо исправить resourceType в сервлете до вашего sling:resourceType в jcr:content узле страницы. Другое дело, что ваш сервлет с набором resourceType не будет вызываться, если ваш путь указывает на узел cq: Page node, он должен указывать на узел jcr:content, который будет подхвачен сервлетом.

@SlingServlet(
     methods = {"POST"}, 
     resourceTypes = {"path/to/resource/type"}, 
     extensions = {"html"}) 
public class AssetDownloadServlet extends SlingAllMethodsServlet { 

И ваше определение формы должно быть как -

<form method="POST" action="${currentPage.path}/_jcr_content.html"> 

Обратите внимание, что jcr:content записывается как _jcr_content

+0

я опробовал свое предложение. Но вопрос все еще существует. Я также не вижу изменений в журналах. – phemanthkumar28

+0

Мой плохой, я изменил URL-адрес в своем ответе выше, его /_jcr_content.html не ._jcr_content.html –

+0

Я пробовал даже это, все прошло неплохо. Я добавляю информацию CQ, которую я получаю на странице в приведенном выше фрагменте. – phemanthkumar28

Смежные вопросы