0

最初の jspに<s:form>タグがあり、struts アクションを介してフォームを送信し、別の jsp を表示すると、フォーム タグが 2 番目の jsp にも拡張されているようです。(firebugで観察されたように)。これらの jsps に同じ ID を持つ要素がいくつかあり、このようにそれらを一緒にクラブすると、多くの問題が発生します。また、<head>2 番目の jsp のセクションは無視されます。

これは page1.jsp の基本構造です。

<html>
<head>
    <%@ taglib uri="/struts-tags" prefix="s" %> 
    <script type="text/javascript" src="../js/page1.js"></script>
</head>
<body>
    <s:form name="form1" id="form1" action="" method="post" namespace="">
        <div data-role="page" id="firstPage">
            <div id="xyz" class = "xyz"></div>
            .....//other elements
        </div>
    </s:form>
    <script type="text/javascript">
        .... // do stuff and submit "form1" to process.action
    </script>
</body>
</html>

page2.jsp の基本構造:

<html>
<head>
    <script type="text/javascript" src="../js/page2.js"></script>
</head>
<body>
   <div data-role="page" id="secondPage">
       <div id="xyz" class = "xyz"></div>
       .....//other elements
   </div>
</body>
</html>

firebug で見られる HTML:

<html>
<head>
    <%@ taglib uri="/struts-tags" prefix="s" %> 
    <script type="text/javascript" src="../js/page1.js"></script>
</head>
<body>
  <form name="form1" id="form1" method="post" action="process.action">
      <div data-role="page" id="firstPage">
          <div id="xyz" class = "xyz"></div>
          .....//other elements
      </div>
      <div data-role="page" data-external-page="true" id="secondPage">
          <div id="xyz" class = "xyz"></div>
          .....//other elements
      </div>
  <form>
  <script type="text/javascript">
      .... // do stuff and submit "form1" to process.action
  </script>
</body>
</html>

したがって、これにより、ID "xyz" を持つ 2 つの要素と、2 つの jsps で同じ値を持つ他の ID を持つ同じ html フォームが生成されます。私は何を間違っていますか、またはこれを防ぐにはどうすればよいですか?

編集:data-external-page="true"レンダリングされたhtmlにdiv「secondPage」が追加されているのがわかります。page2.jsp で明示的に false に設定しようとしましたが、どちらも機能します。

また、リフレッシュ効果もあります。ページに入力するために必要なデータはリロード時に存在しませんが、この特定の問題はリロード時に解消されます。

編集: struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>
    <package name="location" namespace="/location">
        <action name="start" class="StartAction">
            <result name="success">/WEB-INF/templates/location/page1.jsp</result>
        </action>

        <action name="process" class="ProcessAction">
            <result name="success">/WEB-INF/templates/location/page2.jsp</result>
        </action>

    </package>
</struts>

ProcessAction.java:

public class ProcessAction{
    private String xyz;

    //other elements
    //getters and setters

    @Override
    public String process() {
       //get data from DB and set it to xyz and other elements, 
       //whose corresponding elements are in page2.jsp

       return SUCCESS;
    }
}
4

1 に答える 1