2010-11-16 18 views
0

J'ai créé une grille en utilisant le plugin jquery struts2. J'ai une colonne de la grille qui est la clé primaire de la table que je mets à non-éditable. Lorsque j'essaie de modifier l'une des lignes de la table dans la grille, la colonne de clé n'est pas transmise au serveur. J'ai essayé de définir l'attribut editable de la colonne clé sur true, c'est la seule fois où elle a envoyé la clé au serveur. Dans la vitrine, l'id est également défini sur non-editable mais le serveur le reçoit en tant que paramètre. Veuillez m'aider à ce sujet. Je pourrais manquer quelque chose.La colonne jquery struts2 de la grille editable = "false" n'est pas transmise au serveur

Voici mon code pour le jsp:

<s:url id="adm201_grid" action="adm201grid"> 
    <s:param name="bomId" value="%{bom.bomId}"/> 
</s:url> 
<s:url id="adm201_edit_grid" action="adm201editgrid"> 
    <s:param name="bomId" value="%{bom.bomId}"/> 
</s:url> 
<s:url id="select_material" action="select_material"/> 
<sjg:grid 
    gridModel="gridModel" 
    caption="Bill of Materials" 
    href="%{adm201_grid}" 
    dataType="json" 
    pager="true" 
    navigator="true" 
    navigatorSearchOptions="{multipleSearch:true}" 
    navigatorEdit="true" 
    navigatorDelete="true" 
    rowList="10,15,20" 
    rowNum="15" 
    editurl="%{adm201_edit_grid}" 
    editinline="false" 
    multiselect="true" 
    width="500" 
    navigatorAddOptions="{reloadAfterSubmit:true}" 
    navigatorEditOptions="{reloadAfterSubmit:false}" 
    > 
    <sjg:gridColumn 
    name="bomMatId" 
    index="bomMatId" 
    title="BOM Material ID"/> 
    <sjg:gridColumn 
    name="material.materialId" 
    title="Material" 
    sortable="true" 
    editable="true" 
    edittype="select" 
    editoptions="{dataUrl:'%{select_material}'}" 
    formatter="integer" 
    width="40"/> 
    <sjg:gridColumn 
    name="material.descrip" 
    title="Description" 
    sortable="true" 
    width="150"/> 
    <sjg:gridColumn 
    name="material.unit" 
    title="Unit" 
    sortable="true" 
    width="30"/> 
    <sjg:gridColumn 
    name="quantity" 
    title="Quantity" 
    sortable="true" 
    editable="true" 
    edittype="text" 
    formatter="integer" 
    width="40"/> 
</sjg:grid> 

Voici mon code pour l'action edit:

public class ADM201EditGrid extends ActionSupport { 

    private static final long serialVersionUID = 3887575129335166744L; 

    private String oper; 
    private BOMMaterials bomMaterials; 
    private BOMMaterialsDao bomMatDao = new BOMMaterialsDao(); 
    private Long bomId; 
    private Material material; 
    private Long quantity; 
    private Long bomMatId; 

    // getters and setters  

    @Override 
    @Actions({ 
     @Action(value = "/adm201editgrid", results = { 
     @Result(name = "success", location = "simpleecho.jsp"), 
     @Result(name = "input", location = "simpleecho.jsp") 
     }) 
    }) 
    public String execute() throws Exception { 
    if (oper.equals("add") || oper.equals("edit")) { 
    bomMaterials = new BOMMaterials(); 
    bomMaterials.setBomId(bomId); 
      bomMaterials.setBomMatId(bomMatId); 
    bomMaterials.setMaterial(material); 
    bomMaterials.setQuantity(quantity); 

    bomMatDao.save(bomMaterials, bomMaterials.getBomMatId()); 
    } 
     return SUCCESS; 
    } 
    } 

Espérant vous des réponses immédiates. Merci beaucoup!

~ Honey =)

Répondre

1

Au lieu de mettre éditable false, essayez de cacher true, auquel cas il sera transmis au serveur et ne sera pas visible dans la boîte de dialogue Ajout/édition de la la grille.