0

以下の jsp は、Web サービスから返された HashMap 値を示しています。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<%@page import="com.action.AuraDecisionWorsheetDetailsService"%>
<%@page import="com.action.AuraDecisionWorsheetDetailsServiceLocator"%>

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<form name="form1" method="post" action='gawd.jsp'>
<center><h1>DETAILS</h1></center>

<%
    try{
        AuraDecisionWorsheetDetailsService psi = new AuraDecisionWorsheetDetailsServiceLocator();

        com.action.AuraDecisionWorsheetDetails ps = psi.getAuraDecisionWorsheetDetails();

    if(request.getParameter("PolId")!=null){ 

        String pol_id=request.getParameter("PolId");


    %>
        <center><b>RESULT :</b> <%= ps.service(pol_id)%></center>
    <% }else
        {%>

    <TABLE align="center">
    <TR>
        <TD>ENTER POLICY NUMBER</TD>
        <TD><input type="text" name= "PolId"  /></TD>
    </TR>
    <TR>
        <TD colspan="2" align="center">&nbsp;</TD>
    </TR>
    <TR>
        <TD colspan="2" align="center"><input type="submit" value="Submit"></TD>
    </TR>


    </TABLE>    
    <% } 
    }catch(Exception exe)
    {
        exe.printStackTrace();
    }
    %>

</form>

</BODY>
</HTML>

以下の例外を受け取りました

faultString: java.io.IOException: No serializer found for class com.solcorp.pathfinder.uidefs.UIElement in registry org.apache.axis.encoding.TypeMappingDelegate@c87621

Caused by: java.io.IOException: No serializer found for class com.solcorp.pathfinder.uidefs.UIElement in registry org.apache.axis.encoding.TypeMappingDelegate@c87621

Web サービスは 1 つのパラメーター、つまり pol_id を取り、HashMap を返します。Apache Axis を使用して作成されます。

4

1 に答える 1

2

このコードには非常に多くの問題があります。

  1. JSP から Web サービスを呼び出すのは悪い習慣です。サーブレットで実行する必要があります。jsp は、主にロジックではなくプレゼンテーションに焦点を当てる必要があります。jstlを使用してみてください。
  2. alert(pol_id);スクリプトタグを開かずにやっています。alertは JavaScript 関数であり、 内に含める必要があります<script></script>
  3. 次の行があります: <TD><input type="text" name= "PolId" %></TD>、明らかに次のようになります: (最後に に<input type="text" name= "PolId" /></TD>変更したことに注意してください。%/
  4. この行で:<%= ps.service(pol_id)%>あなたは最後に欠けています;
  5. 次の条件があります。

    `if(request.getParameter("PolId")!=null){ 
         String pol_id=request.getParameter("PolId")==null?"":request.getParameter("PolId");}`
    

    同じチェックを 2 回行っている場合は、if または三項演算子を削除してください。

これらの問題を修正してください (最初の問題は実際にはベスト プラクティスなので、今は飛ばして構いません)。さらに問題が発生した場合は、戻ってきて質問を投稿してください。

編集: あなたのコードでは、サービスからの結果を eching しています:

`<center><b>RESULT :</b> <%= ps.service(pol_id)%></center>`

しかし、あなたが言ったように、それはハッシュマップなので、直接エコーすることはできないと思います. 抽出した値をエコーする必要があるため、テストのためにこれを試してください。

//in the java snippet
Map map = ps.service(pol_id);
 ...
//in the html
<center><b>RESULT :</b> <%= map.get(0)%></center>
于 2012-08-01T08:25:31.097 に答える