0

<h:panelGroup条件付きテキスト表示用に2つあります。id を空にして実行すると、この条件が正常に実行され#{empty personBean.person.id}、その中にテキストが表示されます。パネルを配置<h2>#{buttonText}</h2>すると、ボタンテキストが h2 タグに正しく表示されます。

今問題:

以下のコード<h2>#{buttonText}</h2>では、以下のように最後に配置すると、常に値更新メンバーbuttonTextを取得するため、下のページのどこにも値を使用できません。誰かが私に何をすべきか教えてください。

 <h:panelGroup rendered="#{empty personBean.person.id}">
                        <h1>Add Information</h1>
                        <i>Use the form below to add your information.</i>
                        <ui:param name="buttonText" value="Add member" />
                    </h:panelGroup>
                    <h:panelGroup rendered="#{not empty personBean.person.id}">
                        <h1>Update Information</h1>
                        <i>Use the form below to edit your information.</i>
                        <ui:param name="buttonText" value="Update member" />
                    </h:panelGroup>
                    <h2>#{buttonText}</h2>

JSTL セット変数を使用する<ui:paramように使用できません。<c:set var="buttonText" value="Add member" />


Google ストリートマップにカスタム イメージ オーバーレイを追加するにはどうすればよいですか?

Google ストリート マップにカスタム オーバーレイを追加する方法はありますか?

オーバーレイを配置したい例を次に示します: JSFiddle

ここにコードがあります

<html><head><style type="text/css">@media print {  .gmnoprint {    display:none  }}@media screen {  .gmnoscreen {    display:none  }}</style>
    <meta charset="utf-8">
    <title>Google Maps JavaScript API v3 Example: Street View Layer</title>

    <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&amp;sensor=false"></script>

    <script>
var caffe = new google.maps.LatLng(37.869085,-122.254775);

function initialize() {

  var panoramaOptions = {
    position:caffe,
     linksControl: false,       // disables link control
     panControl: false,
     enableCloseButton: false,
    pov: { 
      heading: 270,
      pitch:0,
      zoom:1
    },
    visible:true
  };
  var panorama = new google.maps.StreetViewPanorama(document.getElementById("pano"), panoramaOptions);

  google.maps.event.addListener(panorama, 'pano_changed', function() {
      //var panoCell = document.getElementById('pano_cell');
     // panoCell.firstChild.nodeValue = panorama.getPano();
  });

  google.maps.event.addListener(panorama, 'links_changed', function() {
      /*var linksTable = document.getElementById('links_table');
      while(linksTable.hasChildNodes()) {
        linksTable.removeChild(linksTable.lastChild);
      };
      var links =  panorama.getLinks();
      for (var i in links) {
        var row = document.createElement("tr");
        linksTable.appendChild(row);
        var hCell = document.createElement("td");
        var hText = "Link: " + i + "";
        hCell.innerHTML = hText;
        var vCell = document.createElement("td");
        var vText = links[i].description;
        vCell.innerHTML = vText;
        linksTable.appendChild(hCell);
        linksTable.appendChild(vCell);
      }*/
  });

  google.maps.event.addListener(panorama, 'position_changed', function() {
     // console.log(panorama.getPosition());
  });

  google.maps.event.addListener(panorama, 'pov_changed', function() {
      console.log(panorama.getPov().heading);

  });

}
    </script>
  <script type="text/javascript" charset="UTF-8" src="https://maps.gstatic.com/cat_js/intl/en_us/mapfiles/api-3/11/1/%7Bcommon,map%7D.js"></script><script type="text/javascript" charset="UTF-8" src="https://maps.gstatic.com/cat_js/intl/en_us/mapfiles/api-3/11/1/%7Butil,onion%7D.js"></script><script type="text/javascript" charset="UTF-8" src="https://maps.gstatic.com/cat_js/intl/en_us/mapfiles/api-3/11/1/%7Bcontrols,stats%7D.js"></script><script type="text/javascript" charset="UTF-8" src="https://maps.gstatic.com/cat_js/intl/en_us/mapfiles/api-3/11/1/%7Bmarker%7D.js"></script></head>
  <body onload="initialize()">

    <div id="pano" style="width: 400px; height: 300px; position: relative; background-color: rgb(229, 227, 223); overflow: hidden; -webkit-transform: translateZ(0);"></div>

</body></html>
4

1 に答える 1

2

<ui:param>、ビューのレンダリング時に評価されません(自問してください。必ずHTMLを生成しますか?)が、ビューのビルド時に評価されます。したがって、rendered属性はまったく考慮されておらず、事実上、両方が解釈されることになり、後者は常に前者をオーバーライドします。

技術的には、「レンダリング」する必要があります(「ビルド」はより適切な用語ですが、少し奇妙に読めます)。条件付きで、などのビュービルドタイムタグを使用します<c:if>。ただし、特定の構成では、の値でまったく同じ条件をチェックし、<ui:param>2つではなく1つだけにすることをお勧めします。

<ui:param name="buttonText" value="#{empty personBean.person.id ? 'Add' : 'Update'} member" />

または、必要な場所で直接評価します

<h2>#{empty personBean.person.id ? 'Add' : 'Update'} member</h2>

参照:

于 2012-11-30T13:35:53.843 に答える