2016-11-03 16 views
0

form:selectタグからいくつかの値を事前に選択しようとしています。そこで、私のサンプルクラスを見てみましょう:形式の奇妙な結果:形式のオプション:選択

public class Post 
{ 
    private boolean anonymize; 
    private boolean videoRequired; 

    /* getters, setters */ 
} 

ご覧のとおり、2つのブールフィールドがあります。私はこのようなJSPで最初のものを使用しています:

<label>Anonymize</label> 
<form:select path="anonymize" id="anonymize" class="form-control"> 
    <form:option value="true" label="Yes" selected="${ (post.anonymize) ? true : ''}" /> 
    <form:option value="false" label="No" selected="${ (!post.anonymize) ? true : ''}" /> 
</form:select> 

れ、私はその要素を検査する際、中の結果は、(のはanonymizetrueであるとする):

<select id="anonymize" name="anonymize" class="form-control"> 
    <option selected="true" value="true">Yes</option> 
    <option value="false">No</option> 
</select> 

これまでのところは良いです。
私は他のブールフィールドvideoRequiredと同じことをやっています。まずJSP:どのようにこのことができます <option value="false" selected="selected">No</option>

<label>Video required</label> 
<select id="videoRequired" name="videoRequired" class="form-control"> 
    <option selected="true" value="true">Yes</option> 
    <option value="false" selected="selected">No</option>   
</select> 

この行を見てみましょう:(再び、のvideoRequiredtrueであるとする)の結果は、

<label>Video required</label> 
<form:select path="videoRequired" id="videoRequired" class="form-control"> 
    <form:option value="true" label="Yes" selected="${ (post.videoRequired) ? true : '' }" /> 
    <form:option value="false" label="No" selected="${ (!post.videoRequired) ? true : '' }" />   
</form:select> 

たとえ起こっても?私はこれで数時間前から立ち往生しています。私は<c:choose>タグで試してみて、selectedという属性をハードコードしています。それはまったく同じ奇妙な結果をもたらしました。私は間違ってどこに説明してください誰かができますか?私は両方のフィールドで同じことをしているので、私の頭脳を引き出していますが、まだ1つは動作しますが、もう1つは動作しません。 Btw、私はmysqlを見て、両方のフィールドが正しく設定されています。

+0

ModelMap経由で空のオブジェクトをコントローラから渡していますか?もしそうなら、そのオブジェクトの変数 'anonymize'をtrueに設定します。選択ボックスがあらかじめ選択されています –

+1

私はModelMapを使用していません。しかし、あなたのコメントは私のコントローラでこれを行うには、私はエラーを把握させた、私は "忘れてしまった"(私はそれをやったことを確かに、おそらく私は誤って削除した): 'boolean videoRequired = post.isVideoRequired generalForm.setVideoRequired(videoRequired); ' 私は自分自身に驚いています...本当に驚いたように - 'おかげで!私はそれを受け入れることができるように答えを書く必要があります:) – peech

答えて

1

form:select要素を事前に選択するには、ビューを返すコントローラメソッドで対応する変数anonymizeをtrueに設定します。

@Controller 
public String getForm(ModelMap model, Post post){ 
    post.setVideoRequired(true); 
    return "view-name"; 
} 
関連する問題