2014-04-25 55 views
1

我在AdobeCQ5一個新手。我在張貼表單時遇到了一些麻煩。這裏是我的結構 -無法發佈形式Adode CQ5

/apps/<myproject>/components/mytestcomponent 

mytestcomopnent.jsp有以下代碼 -

<form id="myForm" action="<%=resource.getPath()+".html" %>"> 
    <input type="text" id="t1" class="input-small" placeholder="Temprature F" /> 
    <input type="text" id="t2" class="input-small" placeholder="Temprature C" readonly/> 
    <button type="button" id="cbtn" class="btn">Convert</button> 
</form> 

<script> 
    $(document).ready(function() { 
     $('#cbtn').click(function() {   
      var URL = $("#myForm").attr("action"); 
      alert(URL); 
      var t1=$("#t1").val(); 
      var t2=$("#t2").val(); 
      $.ajax({ 
       url: URL, 
       data:{'t1':t1}, 
       type:"post", 
       success: function(data, status) { 
        $("#t2").val(data); 
       }, 
       error: function(xhr, txtStat, errThrown) { 
        alert("ajax error! " + txtStat + ":::" + errThrown); 
       } 
      }); 
     }); 
    });  
</script> 

這是給我的回覆代碼200(成功),但輸出不期望的。我mycomponent.POST.jsp有以下代碼 -

<% 
    // TODO add you code here 
    String t1=request.getParameter("t1"); 
%> 
<%= t1 %> 

它提供了以下輸出

Content modified /content/imobile/en/jcr:content/social.html 
    Status  
    200 
    Message 
    OK 
    Location  /content/imobile/en/_jcr_content/social.html 
    Parent Location /content/imobile/en/_jcr_content 
    Path 
    /content/imobile/en/jcr:content/social.html 
    Referer http://example.comt:4502/content/imobile/en.html 
    ChangeLog 
<pre></pre> 
Go Back 
Modified Resource 
Parent of Modified Resource 

請幫助解決這個問題。

+0

謝謝編輯此。 – Hitesh

回答

5

的JSP文件處理爲組件POST方法應該被命名爲POST.jsp,而不是mycomponent.POST.jsp

請注意,如果您攔截所有POST請求您的組件,您將無法對其進行編輯使用對話框(如對話框簡單數據發佈到組件URL)筆者實例。爲了避免它,請考慮使用自定義選擇器(如form)。您的窗體應聲明如下:

<form id="myForm" action="${resource.path}.form.html"> 

和腳本處理POST請求應該叫form.POST.jsp

第二個重要的事情是,你應該使用的Java類,而不是JSP文件來存儲業務邏輯。在這種情況下,這意味着form.POST.jsp腳本可以宣佈Sling servlet如下替換:

@SlingServlet(
    resourceTypes="myproject/components/mytestcomponent", 
    methods="POST", 
    selectors="form") 
+0

感謝@Tomek :) – Hitesh

+0

不客氣。考慮接受答案,如果你覺得它有用。 ;) –

+0

謝謝@TomekRękawek!有關使用選擇器來區分通過表單和對話框發出的POST請求的額外信息位是神發送 –