2015-08-26 86 views
0

我已創建JSP的一個簡單應用..調用從另一個JSP文件中的JSP功能

在我的全局函數的JSP文件,我已經創建功能如下:

<%! public double calcB(double w, double h){ 
       double B = 0; 

       return B = (w/(h * h)); 

      } 


      public String calcClassif(double B){ 
       String classifi = null; 

        if(B >= 30) 
         classif = "Obese"; 
        else if(B >= 25) 
         classif = "Overweight"; 
        else if(B >= 18.5) 
         classif = "Normal"; 
        else 
         classif = "Underweight"; 

        return classif; 

      } 

     %> 

現在在我的我index.jsp文件,我寫了下面的:

<%@include file = "globalFunctions.jsp" %> 

     <% Boolean submitted = Boolean.parseBoolean(request.getParameter("isSubmitted")); 
      double we = 0, he = 0; 
      if(submitted){ 

       weight = Double.parseDouble(request.getParameter("w")); 
       height = Double.parseDouble(request.getParameter("h"));         
      } 
     %> 

     <h3>BMI Calculator</h3> 

     <form action = "index.jsp" method = "post"> 
      <input type ="hidden" name = "isSubmitted" value = "true"> 
      Weight: <input type = "text" name = "w"> <br> <br> 
      Height: <input type = "text" name = "h"> <br> <br> 
      <input type = "submit" value = "Compute"> <br> <br> 

      BMI: <%= calcBMI(we, he) %> <br> <br> 
      Classification: <%= classification %> 
    </form> 

當我執行應用程序,分類工作不..我怎麼叫,顯示我正確的分類方法? 請幫忙..謝謝

+1

將業務邏輯包含在jsp中確實不是最佳實踐。在servlet容器從jsp編譯它之後,你創建的方法將在另一個servlet中。你可以聲明它是靜態的,並嘗試猜測類名,祝你好運。 – dotvav

+0

其實,我剛剛開始使用Java EE ..所以,我是一個新手:p 如果你能看到有什麼問題,你能提供一個關於上述的啓示嗎? :) –

回答

1

你永遠不會爲classification指定一個值。您可以試試這個:

<%@include file = "globalFunctions.jsp" %> 

     <% Boolean submitted = Boolean.parseBoolean(request.getParameter("isSubmitted")); 
      double we = 0, he = 0; 
      if(submitted){ 
       weight = Double.parseDouble(request.getParameter("w")); 
       height = Double.parseDouble(request.getParameter("h")); 
       bmi = calcBMI(we, he); 
       classification = calcClassif(bmi); 
      } 
     %> 

     <h3>BMI Calculator</h3> 

     <form action = "index.jsp" method = "post"> 
      <input type ="hidden" name = "isSubmitted" value = "true"> 
      Weight: <input type = "text" name = "w"> <br> <br> 
      Height: <input type = "text" name = "h"> <br> <br> 
      <input type = "submit" value = "Compute"> <br> <br> 

      BMI: <%= bmi %> <br> <br> 
      Classification: <%= classification %> 
    </form> 
+0

謝謝..我忘了我應該分配一個變量的分類.. 現在它的工作:)謝謝很多.. PS - 我無法投票給你,因爲我是一個新手在這裏沒有足夠的聲望..:/但我已經用綠色的接受標記了您的答案 –

0

每當您的JSP由您的servlet容器編譯時,它每次都以不同的名稱編譯。這使得很難在另一個JSP頁面中使用JSP頁面功能。我建議您開始使用servlet和POJO來滿足您的數據處理需求。

無論如何,您沒有任何名爲classification(index.jsp:21)的變量,因此它不會顯示,並且服務器將錯誤記錄到控制檯,而不是像PHP那樣的客戶端。

+0

感謝您的幫助太.. 我仍然是Java EE的初學者! :d –