4

こんにちは、データベースからフェッチされ、JSP にロードされたチェックボックスの値を更新したいと思います。従業員プロフィールを作成しています。Jsp には、従業員名、従業員の住所、従業員の技術スキルのフィールドがあります。Employee Skills には、次の値を選択するための次のチェックボックスがあります。

Checkbox1: Java Checkbox2: ドットネット

従業員 X の場合、計算スキル Java とデータベースのドット ネットの両方を持っていません。データベースから JSP にレコードをフェッチできます。

アクション クラスでは、データベースから値をフェッチし、それらを 2 つのゲッターとセッターを持つ EmployeeForm に設定しています。setattribute を使用して、これらの値をリクエストで設定しています。

EmployeeUpdate.jsp では、次のことを行っています

String skillsValue1=(String)request.getAttribute("C/C++");
String skillsValue2=(String)request.getAttribute("Java");

 <%if(skillsValue1!=null){ %>
         <html:checkbox property="ComputationalSkill1" value="C/C++"/>                     
           <%}else{ %>
              <html:checkbox property="ComputationalSkill1" value=" "/>  
                 <%}%>
            </td>          

<%if(skillsValue2!=null){ %>
         <html:checkbox property="ComputationalSkill2" value="Java"/>                     
           <%}else{ %>
              <html:checkbox property="ComputationalSkill2" value=" "/>  
                 <%}%>
            </td>  

次のコードは、上記のスキルのいずれかを持つ従業員とスキルを持たない従業員のチェックボックスを完全に表示します。

ここで次の問題が発生しています

  1. 以前にチェックしたフィールドの値をオフにすると、値は Bean で完全に null に設定されます。しかし、以前にチェックされなかったフィールドの値をチェックすると(フィールドのいずれかを更新するために)、特定のプロパティのBeanに値が設定されておらず、nullもありません。

チェックボックスの変更された値を取得する方法を誰かに教えてもらえますか。つまり、状態をチェック解除からチェック状態に変更すると、プロパティに値を設定する必要があります。

4

1 に答える 1

5

従業員がスキル Java を持っている場合、次のチェックボックスが表示されます。

<html:checkbox property="ComputationalSkill2" value="Java"/>  

これは、送信時にチェックボックスがオンになっている場合、次のパラメーターが送信されることを意味します。

ComputationalSkill2=Java

従業員がスキル Java を持っていない場合、次のチェックボックスが表示されます。

<html:checkbox property="ComputationalSkill2" value=" "/>

これは、送信時にチェックボックスがオンになっている場合、次のパラメーターが送信されることを意味します。

ComputationalSkill2=<blank space>

必要なのは、常に同じチェックボックス (最初のチェックボックス) を生成することですが、従業員がスキル Java を持っている場合は事前選択し、従業員がスキル Java を持っていない場合は事前選択しません。

これは、<html:checkbox>タグをそのまま使用することはできません。これは、ブール プロパティにバインドされることになっているためです。したがって、代わりにフォーム Bean にプロパティisJavaSkilled()/を持ち、使用することができますsetJavaSkilled()

<html:checkbox property="javaSkilled"/>

Struts は、フォームの javaSkilled プロパティが true の場合はチェックボックスを事前に選択し、false の場合はチェックしないままにします。

ただし、存在するスキルと存在しないスキルのリストがあるため、代わりにgetSkills()/setSkills()型のプロパティを持ち、タグString[]を使用する必要があることに注意してください。<html:multibox>

于 2012-12-24T16:49:19.357 に答える