我必須添加項目到現有的代碼,但我不知道所有建立的模式。 我需要從javascript中的數值字段中檢索值,將其存儲在JSP標記變量中並將其提交給Java方法。 我知道JavaScript是客戶端和服務器端Java。如何發送一個Javascript變量到服務器端?
這是一個數字字段「ZONE」,其值必須被回收用於循環
添加的代碼輸入「ZONE」,行動布通「ADD_ELEMENT_LISTE_OUVERTE_1」和變量和環「區」。
謝謝!
JSP端代碼:
<popo:form>
<div class="left">
nombre de colonnes <input type="number" id="zone" name="zone" class="text" maxlength="25" valeur="" />
</div>
<div class="right">
<%controller.getContext().getInteger(ListeOuverteContributionDetailController.ZONE) =%>
<script type="text/javascript">
function getZoneJS() {
var zone=(parseInt(document.form.elements["zone"].value));
if (zone != null){
return zone;
}
}
</script>
<popo:action name="ADD_ELEMENT_LISTE_OUVERTE_1" text="Ajouter les colonnes" />
</div>
<popo:listpanel dtcid="<%=ListeOuverteContributionDetailController.DTC_ELEMENTS_LISTE_OUVERTE%>" readonly="false">
<popo:grid cols="2" colwidth="200px,*">
<popo:iterator>
<popo:field name="VALEUR"/>
<popo:action name="DELETE_ELEMENT_LISTE_OUVERTE" text="<%=controller.getTextSupprimer()%>" style="icon"/>
</popo:iterator>
</popo:grid>
</popo:listpanel>
<div class="left">
<popo:action name="ADD_ELEMENT_LISTE_OUVERTE" text="Ajouter un élément"/>
</div>
<div class="left">
<%--<popo:link address="<%=AddressItems.IMPORT_LISTE_OUVERTE_ADDRESS.getAddress()%>" fields="CHAMP_ID" objects="<%="FOR_ID," + controller.getChampKey(champId)+","+controller.DTC_ELEMENTS_LISTE_OUVERTE%>" style="button">Importer</popo:link>--%>
<popo:action name="IMPORT_LISTE_OUVERTE" text="Importer"/>
</div>
<div class="left">
<popo:action name="EXPORT_LISTE_OUVERTE" text="Exporter" />
</div>
<div class="clear"></div>
<div class="buttonbar">
<div class="left">
<popo:link address="<%=AddressItems.SECTION_CONTRIBUTION_DETAIL_ADDRESS.getAddress()%>" fields="SEC_ID" objects="FOR_ID" params="<%="MODE=" + DetailController.MODE_EDIT%>" style="button" confirm="<%=Constantes.MSG_CONFIRM_QUITTER_ECRAN_CREATION_MAJ%>">Abandonner</popo:link>
</div>
<div class="right">
<popo:action name="SAVE_MODIFICATIONS_LISTE_OUVERTE" text="Enregistrer" isdefaultaction="true"/>
</div>
</div>
</popo:form>
Java方法將檢索ZONE可變循環
public class ListeOuverteContributionDetailController extends AbstractContributionController {
/**
* Liste des éléments de la liste ouverte.
*/
public static final String DTC_ELEMENTS_LISTE_OUVERTE = "DTC_ELEMENTS_LISTE_OUVERTE";
public static final String SI_AJOUT_ELEMENT = "SI_AJOUT_ELEMENT";
public static final String ZONE = "ZONE";
public Message executeAddElementListeOuverte1() throws KUserException, KSystemException {
final DtCollection<ElementListeOuverte> elementsListeOuverte = getContext().<ElementListeOuverte>getDtCollectionInput(DTC_ELEMENTS_LISTE_OUVERTE).validate();
// la valeur zone qui doit être récupérée de la JSP
final int zone = Integer.parseInt(getContext().getString(ZONE));
for (int i = 1; i <= zone; i++) {
// On ajoute un élément à la liste des éléments stockée dans le contexte en le flagant "Nouveau"
final ElementListeOuverte elementListeOuverte = new ElementListeOuverte();
final ChampContribution champ = getContext().<ChampContribution>getDtObjectInput(getChampKey(getContext().getLong(CHAMP_ID))).validate();
elementListeOuverte.setChampId(champ.getChampId());
elementListeOuverte.setSiNouveau(true);
elementListeOuverte.setSiSupprime(false);
elementsListeOuverte.add(elementListeOuverte);
getContext().put(SI_AJOUT_ELEMENT, true);
}
return refresh();
}
}
一次,在代碼中存在*代碼太多*無論如何,您無法將值從JavaScript傳遞到Java到Java(反過來),你能*做的是做一個Ajax調用f rom JavaScript。 – Viruzzo 2012-01-16 15:04:17
我很抱歉整個代碼,因爲我想解釋可能的概率。我會編輯它。在JSP方面,我已經成功使用JS函數getZoneJS()獲取項目值。現在我想將它設置在一個變量中,並將其提交給java方法。我不認爲AJAX會幫助我更多。 – frexville 2012-01-16 15:18:07