1

私が構築しているモバイル アプリには、単純な先行入力フィールドがあります。

    <xp:inputText id="inputText1"
                value="#{contact.AlwaysAccess}">
                <xp:typeAhead mode="partial" minChars="1">
                    <xp:this.valueList><![CDATA[one
two
three
four
five
six]]></xp:this.valueList>
                </xp:typeAhead>
            </xp:inputText>

次のテーマとルールを db に適用して、プレフィックス m で始まる xpage がモバイル用にレンダリングされるようにしました。

    xsp.ajax.renderwholetree=false
    xsp.error.page.default=true
    xsp.html.doctype=HTML\ PUBLIC\ "-//W3C//DTD\ HTML\ 4.01//EN"\     "http\://www.w3.org/TR/html4/strict.dtd"
    xsp.library.depends=com.ibm.xsp.extlib.library
    xsp.persistence.mode=file
    xsp.resources.aggregate=true
    xsp.theme=oneuiv2.1
    xsp.theme.mobile.pagePrefix=m
    xsp.theme.mobile.android=iphone

xpage がモバイル xpage であることを指定するとすぐに、先行入力フィールドのフォーマットが台無しになります。

モバイル サンプル アプリで確認したところ、同じことが起こりました。他の誰かがこれを見つけましたか?そして、テーマを捨ててスタイリングをゼロから始める以外に、それを修正する最も簡単な方法は何ですか? 何か案は?

4

3 に答える 3

0

これは、XPages モバイルアプリ (LAMY8ZVRG2) での Ajax Type Ahead の既知の問題であり、Domino 9.0 以降で対処する予定です。
回避策は、次のように tundra.css から先行するタイプのスタイリングを含めることです...

  <xp:this.resources>
    <xp:styleSheet
        href="/.ibmxspres/dojoroot-1.8.0-u/dijit/themes/tundra/tundra.css">
    </xp:styleSheet>
</xp:this.resources>


または、Type Ahead コントロールにのみ適用される tundra.css からスタイリングをコピーすることをお勧めします。

しかし、これは現時点では非常に危険です。なぜなら、モバイルで一部の Dojo フォーム コントロールの外観が損なわれる可能性があるからです。
そのため、XPages モバイルアプリの他のコントロールや UI の表示に影響しない限り、この回避策を使用しないことをお勧めします。

于 2013-02-18T20:39:07.490 に答える
0

私が開発したモバイル アプリケーションの先行入力に深刻な問題がありました。結局、Ext.lib と Dojo の使用を断念しました。モバイル XPages の Dojo を無効にして、jQuery Mobile に置き換えました。アプリケーションの再コーディングには時間がかかりましたが、価値があることが判明しました。「アプリ」は最終的にはるかにうまく動作し、スタイリングは XPages/Dojo セットアップよりも簡単になりました。そして、コントロールは期待どおりに動作しました。要するに、私は試行錯誤から私がコントロールできるようになりました:-)

Dojo の代わりに jQuery Mobile を組み込む方法を簡単に説明するために、次のコードでカスタム コントロールを使用します。

    <xp:this.resources>
    <xp:script src="/xpUtil.jss" clientSide="false"></xp:script>
    <xp:linkResource rel="apple-touch-icon">
        <xp:this.href><![CDATA[${javascript:getDbPath() + "mobileHomeLogo.png"}]]></xp:this.href>
    </xp:linkResource>
    <xp:script src="/jquery-1.8.2.min.js" clientSide="true"></xp:script>
    <xp:script src="/jquery.mobile-1.2.0.min.js" clientSide="true"></xp:script>
    <xp:styleSheet href="/jquery.mobile-1.2.0.min.css"></xp:styleSheet>
    <xp:metaData name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"></xp:metaData>
    <xp:metaData name="apple-mobile-web-app-capable" content="yes"></xp:metaData>
    <xp:styleSheet href="/km2012j.css"></xp:styleSheet>
    <xp:script src="/local.js" clientSide="true"></xp:script>
</xp:this.resources>
<xp:this.beforePageLoad><![CDATA[#{javascript:facesContext.getRequestParameters().setJsLibrary(0);}]]></xp:this.beforePageLoad>

ご覧のとおり、コードには私自身の JS ライブラリもいくつか含まれています。しかし、あなたはアイデアを得る....

それはあなたにとって実行可能な解決策ではないかもしれませんが、一見の価値があるかもしれません.

/ジョン

于 2013-02-20T08:52:16.620 に答える